You are on page 1of 18

HISTORIA Y EVOLUCION DE PHP

Historia Fue originalmente diseado en Perl, con base en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador dans-canadiense Rasmus Lerdorf en el ao 1994 para mostrar su currculum vtae y guardar ciertos datos, como la cantidad de trfico que su pgina web reciba. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" despus de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI. Dos programadores israeles del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintctico (parser en ingls) en el ao 1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones pblicas de PHP3 y fue publicado oficialmente en junio de 1998. Para 1999, Suraski y Gutmans reescribieron el cdigo de PHP, produciendo lo que hoy se conoce como motor Zend. Tambin fundaron Zend Technologies en Ramat Gan, Israel. En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El da 13 de julio de 2007 se anunci la suspensin del soporte y desarrollo de la versin 4 de PHP, a pesar de lo anunciado se ha liberado una nueva versin con mejoras de seguridad, la 4.4.8 publicada el 13 de enero del 2008 y posteriormente la versin 4.4.9 publicada el 7 de agosto de 2008. Segn esta noticia se le di soporte a fallos crticos hasta el 9 de agosto de 2008. El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). Incluye todas las ventajas que provee el nuevo Zend Engine 2 como: Mejor soporte para la programacin orientada a objetos, que en versiones anteriores era extremadamente rudimentario. Mejoras de rendimiento. Mejor soporte para MySQL con extensin completamente reescrita. Mejor soporte a XML (XPath, DOM, etc.). Soporte nativo para SQLite. Soporte integrado para SOAP. Iteradores de datos. Manejo de excepciones. Mejoras con la implementacin con Oracle.

QUE ES PHP?
PHP es un lenguaje de programacin interpretado o framework para HTML, diseado originalmente para la creacin de pginas web dinmicas. Se usa principalmente para la interpretacin del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de lnea de comandos o en la creacin de otros tipos de programas incluyendo aplicaciones con interfaz grfica usando las bibliotecas Qt o GTK+.

PRIMER SCRIP PHP


Una vez que ya tenemos instalados PHP y MySQL , y el servidor Apache configurado para usarlos, podemos comenzar a escribir nuestro primer script en PHP. Ejemplo script php <html> <body> <?php $myvar = "Hola. Este es mi primer script en PHP n"; //Esto es un comentario es mi primer script en PHP n"; //Esto es un comentario echo $myvar; ?> </body> </html> Una vez escrito esto lo salvamos en un fichero con la extensin php, y lo colocamos en nuestro servidor, http://mi_servidor/php/test.php . Ahora si ponemos esta URL en nuestro navegador veremos una lnea con el texto "Hola. Este es mi primer script en PHP" . Lo primero que apreciamos en el script son sus delimitadores. En la primera lnea del script vemos <?php que nos indica que comienza un script en PHP, y en la ltima colocamos ?> para indicar el final del script. Hay que destacar que todas las lneas que se encuentre entre estos delimitadores deben acabar en punto y coma , excepto las sentencias de control (if, swicht, while, etc.). Como en toda programacin, es importante poner muchos comentarios, para lo cual si queremos comentar una sola lnea tenemos que poner al principio de la lnea // , si lo que queremos es comentar varias utilizaremos los delimitadores /* - */ . Para que el servidor envi texto utilizaremos la instruccin echo , aunque tambin podemos utilizar printf de uso similar al del C o Perl . Finalmente, vemos que la palabra myvar comienza con el signo dlar ( $ ) . Este smbolo le indica a PHP que es una variable. Nosotros le hemos asignado un texto a esta variable, pero tambin pueden contener nmeros o tablas (arrays). Es importante recordar que todas las variables comienza con el signo dlar . Tambin habris observado que el texto que le asignamos a la variable termina con n , esto no se imprime sirve para indicarle al navegador una nueva lnea.

COMENTARIOS EN PHP
PHP soporta comentarios 'C', 'C++' y etilo consola Unix (estilo Perl). Por ejemplo: <?php echo 'Esto es una prueba'; // Esto es un comentario estilo c++ de una sola lnea /* Esto es un comentario multi-lnea y otra lna de comentarios */ echo 'Esto es otra pruba';

echo 'Una prueba final'; # Esto es un comentario estilo consola de una sola lnea ?> Los comentarios del estilo "una sola lnea" solo comentan hasta el final de la lnea o del bloque actual de cdigo de PHP, lo primero que suceda. Esto implica que el cdigo HTML despus de // ... ?> o # ... ?> SER impreso: ?> sale del modo PHP y vuelve al modo HTML, por lo que // o # no pueden influir en eso. Si la directiva de configuracin asp_tags est activada, acta igual que // %> y # %>. Sin embargo, la etiqueta </script> no sale del modo PHP en un comentario de una sola lnea. <h1>Esto es un <?php # echo 'simple';?> ejemplo</h1> <p>El encabezado anterior dir 'Esto es un ejemplo'.</p> Los comentarios al estilo 'C' finalizan con el primer */ que se encuentre. Asegrese de no anidar comentarios al estilo 'C'. Es muy fcil cometer este error cuando se intenta comentar un bloque grande de cdigo. <?php /* echo 'Esto es una prueba'; /* Este comentario causar un problema*/ */ ?>

SECUENCIA DE ESCAPE EN PHP


El carcter barra invertida tiene varios usos. El primero es que si est seguido de un carcter no alfanumrico, toma cualquier significado especial que el carcter pueda tener. Este uso de la barra invertida como carcter de escape se aplica tanto dentro como fuera de las clases carcter. Por ejemplo, si quiere coincidir un carcter "*", escriba "\*" en el patrn. Esto se aplica aunque el siguiente carcter pudiera ser interpretado como un meta-carcter, por lo que es mejor asegurarse de preceder un carcter no alfanumrico con "\" para especificar que ste se representa a s mismo. En particular, si quiere coincidir una barra invertida, escriba "\\". Nota: Las cadenas PHP entre comillas simples y dobles tienen un significado especial para la barra invertida. As, si \ ha de ser comparado con una expresin regular \\, entonces se debe usar "\\\\" o '\\\\' en cdigo PHP. Si un patrn es compilado con la opcin PCRE_EXTENDED, los espacios en blanco en el patrn (distinto de una clase carcter) y los caracteres entre un "#" fuera de una clase carcter y el siguiente carcter de nueva lnea se ignoran. Una barra invertida de escape se puede usar para incluir un carcter espacio en blanco o "#" como parte del patrn. Un segundo uso de la barra invertida proporciona una manera de codificar caracteres no imprimibles en patrones de una forma visible. No hay restricciones en la aparicin de los caracteres no imprimibles, excepto para el cero binario el cual finaliza el patrn, pero cuando un patrn est siendo preparado para edicin de texto, normalmente es ms fcil usar una de las siguientes secuencias de escape en vez del carcter binario que representan: \a

alarma, es decir, el carcter BEL (07 hex) \cx "control-x", donde x es cualquier carcter \e escape (1B hex) \f salto de pgina (0C hex) \n nueva lnea (0A hex) \p{xx} un carcter con la propiedad xx, vase propiedades unicode para ms informacin \P{xx} un carcter sin la propiedad xx, vase propiedades unicode para ms informacin \r retorno de carro (0D hex) \t tabulador (09 hex) \xhh carcter con el cdigo hexadecimal hh \ddd

TIPOS DE DATOS EN PHP


PHP soporta ocho tipos primitivos. Cuatro tipos escalares: boolean integer float (nmero de punto flotante, tambin conocido como double) string Dos tipos compuestos: array object Y finalmente tres tipos especiales: resource NULL callable algunos pseudo-tipos por razones de legibilidad: mixed number callback El tipo de una variable usualmente no es declarado por el programador; en cambio, es decidido en tiempo de ejecucin por PHP dependiendo del contexto en el que es usado la variable.

Booleanos Este es el tipo ms simple. Un boolean expresa un valor de verdad. Puede ser TRUE or FALSE. Sintaxis Para especificar un literal boolean, use alguna de las palabras clave TRUE o FALSE. Ambas son insensibles a maysculas y minsculas. <?php $foo = True; // asigna el valor TRUE a $foo ?> Usualmente, el resultado de un operador que devuelve un valor boolean es pasado a una estructura de control. <?php // == es un operador que prueba por // igualdad y devuelve un booleano if ($accion == "mostrar_version") { echo "La versin es 1.23"; } // esto no es necesario... if ($mostrar_separadores == TRUE) { echo "<hr>\n"; } // ...porque se puede escribir simplemente: if ($mostrar_separadores) { echo "<hr>\n"; } ?> Enteros Un entero o integer es un nmero del conjunto = {..., -2, -1, 0, 1, 2, ...}. Consulte tambien: Entero de longitud arbitraria / GMP Nmeros de punto flotante BCMath matemticas de precisin arbitraria Sintaxis Los integer pueden ser especificados mediante notacin decimal (base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2), opcionalmente precedidos por un signo (- o +). Los literales integer binarios estn disponibles desde PHP 5.4.0. Para usar la notacin octal, se antepone al nmero un 0 (cero). Para usar la notacin hexadecimal, se antepone al nmero un 0x. Para usar la notacin binaria, se antepone al nmero un 0b. Ejemplo #1 Enteros literales <?php $a = 1234; // nmero decimal

$a = -123; // un nmero negativo $a = 0123; // nmero octal (equivalente a 83 decimal) $a = 0x1A; // nmero hexadecimal (equivalente a 26 decimal) ?> Formalmente, la estructura de integer literales es: decimal : [1-9][0-9]* |0 hexadecimal : 0[xX][0-9a-fA-F]+ octal binario : 0[0-7]+ : 0b[01]+

entero : [+-]?decimal | [+-]?hexadecimal | [+-]?octal | [+-]?binary

Nmeros de punto flotante Los nmeros de punto flotante (tambin conocidos como "flotantes", "dobles" o "nmeros reales") pueden ser especificados usando cualquiera de las siguientes sintaxis: <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> Formalmente: LNUM [0-9]+ DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM}) El tamao de un flotante depende de la plataforma, aunque un valor comn consiste en un mximo de ~1.8e308 con una precisin de aproximadamente 14 dgitos decimales (lo que es un valor de 64 bits en formato IEEE). Cadenas Un string es una serie de caracteres donde un caracter es lo mismo que un byte. Esto significa que PHP solo soporta el conjunto de 256 caracteres y por lo tanto no tiene soporte nativo Unicode. Ver detalles del tipo de dato string. Nota: string puede llegar a alcanzar 2GB de tamao. Sintaxis Un string literal puede ser especificado de cuatro formas diferentes: comillas simples comillas dobles sintaxis heredoc

sintaxis nowdoc (desde PHP 5.3.0) Comillas simples La manera ms sencilla de especificar un string es encerrarlo entre comillas simples (el caracter '). Para especificar una comilla simple literal, se escapa con una barra invertida ( \). Para especificar una barra invertida literal, se duplica (\\). Todas las otras instancias de barras invertidas sern tratadas como una barra invertida literal: esto significa que otras secuencias de escape que se puedan utilizar, tales como \r or \n, sern mostradas literalmente como se especifican en lugar de tener cualquier significado especial Nota: A diferencia de las sintaxis de comillas dobles y heredoc, las variables y las sentencias de escape para caracteres especiales no se expandirn cuando estn incluidas dentro de un string con comillas simples. <?php echo 'Esto es una cadena sencilla'; echo 'Tambien puede incluir nuevas lneas en cadenas de esta forma ya que es correcto hacerlo as'; // Resultado: Arnold una vez dijo: "I'll be back" echo 'Arnold una vez dijo: "I\'ll be back"'; // Resultado: Ha borrado C:\*.*? echo 'Ha borrado C:\\*.*?'; // Resultado: Ha borrado C:\*.*? echo 'Ha borrado C:\*.*?'; // Resultado: Esto no se expandir: \n una nueva lnea echo 'Esto no se expandir: \n una nueva lnea'; // Resultado: Las variables $tampoco se $expandiran echo 'Las variables $tampoco se $expandiran'; ?> Comillas dobles Si un string est encerrado entre comillas dobles ("), PHP interpretar ms sentencias de escape como caracteres especiales: Caracteres escapados Sentencia Significado \n avance de lnea (LF o 0x0A (10) en ASCII) \r retorno de carro (CR o 0x0D (13) en ASCII) \t tabulador horizontal (HT o 0x09 (9) en ASCII) \v tabulador vertical (VT o 0x0B (11) en ASCII) (desde PHP 5.2.5) \e escape (ESC o 0x1B (27) en ASCII) (desde PHP 5.4.0) \f avance de pgina (FF o 0x0C (12) en ASCII) (desde PHP 5.2.5)

Caracteres escapados Sentencia Significado \\ barra invertida \$ signo del dlar \" comillas dobles la secuencia de caracteres que coincida con la expresin regular es un \[0-7]{1,3} caracter en notacin octal \x[0-9A-Fala secuencia de caracteres que coincida con la expresin regular es un f]{1,2} caracter en notacin hexadecimal Al igual que en la delimitacin de un string mediante comillas simples, escapar cualquier otro caracter puede dar lugar a que se muestre tambien la barra invertida. Antes de PHP 5.1.1, la barra invertida en \{$var} no se mostraba. La caracterstica ms importante de entrecomillar un string mediante comillas dobles es el hecho que los nombres de las variables son expandidas. Consulte string parsing para ms detalles. Arrays Un array en PHP es realmente un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo es optimizado para varios usos diferentes; puede ser usado como una matriz real, una lista (vector), una tabla asociativa (una implementacin de un mapa), diccionario, coleccin, pila, cola, y posiblemente ms. Ya que los valores de un array pueden ser otros arrays, rboles y tambin son posibles arrays multidimensionales. Una explicacin sobre tales estructuras de datos est fuera del alcance de este manual, pero encontrar al menos un ejemplo de cada uno de ellos. Para ms informacin, consulte la extensa literatura que existe sobre este amplio tema. Objetos Inicializacin de Objetos Para crear un nuevo object, utilice la declaracin new para instanciar una clase: <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?> Para una descripcin completa, vea el captulo Clases y Objetos. Conversin a un objeto Si un object se convierte en un object, ste no se ve modificado. Si un valor de cualquier otro tipo se convierte en un object, se crea una nueva instancia de la clase stdClass incorporada. Si el valor es NULL, la nueva instancia estar vaca. Los Arrays se

convierten en un object con propiedades nombradas por claves con sus correspondientes valores. Para cualquier otro valor, una variable miembro denominada scalar contendr el valor. <?php $obj = (object) 'ciao'; echo $obj->scalar; // muestra 'ciao' ?>

Recursos Un valor tipo resource es una variable especial, que contiene una referencia a un recurso externo. Los recursos son creados y usados por funciones especiales. Vea el apndice para un listado de todas estas funciones y los tipos resource correspondientes. Vea tambin la funcin get_resource_type(). Conversin a recurso Dado que las variables resource contienen gestores especiales a archivos abiertos, conexiones con bases de datos, reas de pintura de imgenes y cosas por el estilo, la conversin a tipo resource carece de sentido. Liberacin de recursos Gracias al sistema de conteo de referencias introducido con el Motor Zend de PHP 4, un recurso que ya no es referenciado es detectado automticamente, y es liberado por el recolector de basura. Por esta razn, rara vez se necesita liberar la memoria manualmente. <?php while($row = mysql_fetch_row($resource)){ echo $row[0] ; } ?> It's possible to fake this treatment. <?php class fakewhile{ public $arrayCount; public $arrayCounter; function setArrValues(){ $this->arrValues = array(0 =>array("apple","artichoke","apricot"),1 => array("bears","dogs","cats")); $this->arrayCounter = 0; $this->arrayCount = count($this->arrValues); }

function outputValues(){ /* * Anything until the if statement is evaluted one more * time then the array count value */ $arrayInfo = $this->arrValues; $arrCounter = $this->arrayCounter; if($arrCounter > $this->arrayCount){ return false; } $endCounter = $arrCounter+1; $this->arrayCounter = $endCounter; return $arrayInfo[$arrCounter]; } } $fw = new fakewhile(); $fw->setArrValues(); while($row = $fw->outputValues()){ print_r($row); } ?> NULO El valor especial NULL representa una variable sin valor. NULL es el nico valor posible del tipo null. Una variable es considerada null si: se le ha asignado la constante NULL. no se le ha asignado un valor todava. se ha destruido con unset(). Sintaxis No hay ms que un valor de tipo null, y es la constante NULL insensible a maysculas/minsculas. <?php $var = NULL; ?>

Llamadas de retorno Las llamadas de retorno se pueden indicar con el tipo callable a partir de PHP 5.4. Esta documentacin utiliz la informacin del tipo callback con el mismo propsito. Algunas funciones como call_user_func() o usort() aceptan como parmetro funciones de llamada de retorno definidas por el usuario. Las funciones de llamadas de retorno no slo pueden ser funciones simples, sino tambin mtodos de un object, incluyendo mtodos de clase estticos. Pasar una funcin de llamada de retorno Una funcin de PHP se pasa por su nombre como un string. Se puede utilizar cualquier funcin nativa o definida por el usuario, exceptuando contrucciones del lenguaje, tales como: array(), echo, empty(), eval(), exit(), isset(), list(), print o unset(). Un mtodo de un object instanciado se pasa como un array que contiene un object en el ndice 0 y el nombre del mtodo en el ndice 1.

Los mtodos de clase estticos tambin se pueden pasar sin instanciar un object de dicha clase, pasando el nombre de la clase en lugar de un object en el ndice 0. A partir de PHP 5.2.3, tambin es posible pasar 'NombreDeClase::nombreDeMetodo'. Adems de las funciones definidas por el usuario normales, tambin se puede utilizar la funcin create_function() para crear funciones de llamadas de retorno annimas. A partir de PHP 5.3.0 tambin es posible pasar una clausura a un parmetro de una llamada de retorno. Ejemplo #1 Ejemplos de funciones de llamadas de retorno <?php // Un ejemplo de funcin de llamada de retorno function mi_funcin_de_llamada_de_retorno() { echo 'hola mundo!';} // Un ejemplo de mtodo de llamada de retorno class MiClase { static function miMtodoDeLlamadaDeRetorno() { echo 'Hola Mundo!'; }} // Tipo 1: Llamada de retorno simple call_user_func('mi_funcin_de_llamada_de_retorno'); // Tipo 2: Llamada a un mtodo de clase esttico call_user_func(array('MiClase', 'miMtodoDeLlamadaDeRetorno')); // Tipo 3: Llamada al mtodo de un objeto $obj = new MiClase(); call_user_func(array($obj, 'miMtodoDeLlamadaDeRetorno')); // Tipo 4: Llamada a un mtodo de clase esttico (A partir de PHP 5.2.3) call_user_func('MiClase::miMtodoDeLlamadaDeRetorno'); // Tipo 5: Llamada a un mtodo de clase esttico relativo (A partir de PHP 5.3.0) class A { public static function quin() { echo "A\n"; } } class B extends A { public static function quin() { echo "B\n"; } }

call_user_func(array('B', 'parent::quin')); // A ?> mixed mixed indica que un parmetro puede aceptar mltiples tipos (pero no necesariamente todos). gettype(), por ejemplo, puede aceptar todos los tipos PHP, mientras que str_replace() slo acepta strings y arrays. number number indica que un parmetro puede ser tanto un integer como un float. Llamada de retorno Los pseudo-tipos callback fueron usados en est documentacin antes de que la sugerencia de tipo callable fuera introducida en PHP 5.4. Significan exactamente lo mismo. void void como un tipo de variable de retorno significa que el valor de retorno no es til. void en una lista de parmetros significa que la funcin no acepta ningn parmetro. ... $... en el prototipo de funciones significa and so on. Este nombre de variable se usa cuando una funcin puede tomar un nmero infinito de argumentos.

QUE SON VARIABLES?


Variables variables A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables que se pueden definir y usar dinmicamente. Una variable normal se establece con una sentencia como: <?php $a = 'hola'; ?> Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo anterior, hola, se puede usar como el nombre de una variable utilizando dos signos de dlar. Es decir: <?php $$a = 'mundo'; ?> En este momento se han definido y almacenado dos variables en el rbol de smbolos de PHP: $a, que contiene "hola", y $hola, que contiene "mundo". Es ms, esta sentencia: <?php echo "$a ${$a}"; ?> produce el mismo resultado que: <?php echo "$a $hola"; ?> esto quiere decir que ambas producen el resultado: hola mundo.

Para usar variables variables con matrices, hay que resolver un problema de ambigedad. Si se escribe $$a[1] el intrprete necesita saber si nos referimos a utilizar $a[1] como una variable, o si se pretenda utilizar $$a como variable y el ndice [1] como ndice de dicha variable. La sintaxis para resolver esta ambigedad es: ${$a[1]} para el primer caso y ${$a}[1] para el segundo. Tambin se puede acceder a las propiedades de la clase usando el nombre de la variable de la propiedad. El nombre de la propiedad ser resuelto segn donde se hizo la llamada. Por ejemplo, en esta expresin $foo->$bar, de forma local en la clase se buscar por $bar y su valor ser usado como el nombre de la propiedad de $foo. Esto tambin es cierto si $bar es un acceso a un array. Tambin se pueden usar llaves para delimitar de forma clara el nombre de la propiedad. Son muy tiles al acceder a valores dentro una propiedad que contiene un array, cuando el nombre de la propiedad est compuesto de mltiples partes, o cuando el nombre de la propiedad contiene caracteres que de otro modo no son vlidos (p.ej. desde json_decode() o SimpleXML). Ejemplo #1 Ejemplo de propiedad variable <?php class foo { var $bar = 'Soy bar.'; var $arr = array('Soy A.', 'Soy B.', 'Soy C.'); var $r = 'Soy r.'; } $foo = new foo(); $bar = 'bar'; $baz = array('foo', 'bar', 'baz', 'quux'); echo $foo->$bar . "\n"; echo $foo->$baz[1] . "\n"; $start = 'b'; $end = 'ar'; echo $foo->{$start . $end} . "\n"; $arr = 'arr'; echo $foo->$arr[1] . "\n"; echo $foo->{$arr}[1] . "\n"; ?> El resultado del ejemplo sera: Soy bar. Soy bar. Soy bar. Soy r. Soy B.

Arrays
Un array en PHP es realmente un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo es optimizado para varios usos diferentes; puede

ser usado como una matriz real, una lista (vector), una tabla asociativa (una implementacin de un mapa), diccionario, coleccin, pila, cola, y posiblemente ms. Ya que los valores de un array pueden ser otros arrays, rboles y tambin son posibles arrays multidimensionales. Una explicacin sobre tales estructuras de datos est fuera del alcance de este manual, pero encontrar al menos un ejemplo de cada uno de ellos. Para ms informacin, consulte la extensa literatura que existe sobre este amplio tema. Sintaxis Especificacin con array() Un array puede ser creado usando el constructor del lenguaje array(). ste toma un cierto nmero de parejas clave => valor como argumentos. array( clave => valor, clave2 => valor2, clave3 => valor3, ... ) La coma despus del elemento del array es opcional y se puede omitir. Esto normalmente se hace para arrays de una sola lnea, esto es, es preferible array(1, 2) que array(1, 2, ). Por otra parte, para arrays multilnea, la coma final se usa comnmente, ya que permite la adicin sencilla de nuevos elementos al final. A partir de PHP 5.4 tambin se puede usar la sintaxis de array corta, que reemplaza array() con []. Ejemplo #1 Un array simple <?php $array = array( "foo" => "bar", "bar" => "foo", ); // a partir de PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ]; ?> La clave puede ser un integer o un string. El valor puede ser de cualquier tipo. VARIABLES PREDEFINIDAS EN PHP.. Variables predefinidas PHP proporciona una gran cantidad de variables predefinidas para todos los scripts. Las variables representan de todo, desde variables externas hasta variables de entorno incorporadas, desde los ltimos mensajes de error hasta los ltimos encabezados recuperados. Vase tambin la pregunta frecuente titulada "Cmo me afecta register_globals?" Superglobals Superglobals son variables internas que estn disponibles siempre en todos los mbitos

$GLOBALS Hace referencia a todas las variables disponibles en el mbito global $_SERVER Informacin del entorno del servidor y de ejecucin $_GET Variables HTTP GET $_POST Variables HTTP POST $_FILES Variables de Carga de Archivos HTTP $_REQUEST Variables HTTP Request $_SESSION Variables de sesin $_ENV Variables de entorno $_COOKIE Cookies HTTP $php_errormsg El ltimo mensaje de error $HTTP_RAW_POST_DATA Datos POST sin tratar $http_response_header Encabezados de respuesta HTTP $argc El nmero de argumentos pasados a un script $argv Array de argumentos pasados a un script

VARIABLES PREDEFINIDAS EN PHP


Constantes Tabla de contenidos Sintaxis Constantes predefinidas Una constante es un identificador (nombre) para expresar un valor simple. Como el nombre sugiere, este valor no puede variar durante la ejecuccin del script. (A excepcin de las constantes predefinidas, que en realidad no son constantes). Una constante es sensible a maysculas por defecto. Por convencin, los identificadores de contantes siempre suelen declararse en maysculas. El nombre de una constante sigue las mismas reglas que cualquier otra etiqueta de PHP. Un nombre de constante vlido empieza por una letra o subguin, seguido por cualquier nmero o letras, nmeros o subguiones. Usando una expresin regular, se representara de la siguiente manera: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* Ejemplo #1 Nombres de constantes correctos e incorrectos <?php // Nombre de constantes correctos define("FOO", "something"); define("FOO2", "something else"); define("FOO_BAR", "something more"); // Nombres de constantes incorrectos define("2FOO", "something"); // Esto es vlido, pero debera ser evitado: // Ya que quiz algn da PHP crea una constante mgica // con el mismo nombre y en ese caso provocara un error en tu script define("__FOO__", "something"); ?>

FORMULARIOS EN PHP
Otra de las caractersticas ms importantes de PHP es que gestiona formularios HTML. El concepto bsico que es importante entender es que cualquier elemento de los formularios estar disponible automticamente en su cdigo PHP. Por favor lea la seccin del manual titulada Variables fuera de PHP para ms informacin y ejemplos sobre cmo usar formularios HTML con PHP. Observemos un ejemplo: Ejemplo #1 Un formulario HTML simple <form action="accion.php" method="post"> <p>Su nombre: <input type="text" name="nombre" /></p> <p>Su edad: <input type="text" name="edad" /></p> <p><input type="submit" /></p> </form> No hay nada especial en este formularo, es solamente HTML sin ninguna clase de etiquetas especiales de ningn tipo. Cuando el usuario rellena ste formulario y oprime el botn Submit, una pgina titulada accion.php es llamada. En este archivo encontrar algo as: Ejemplo #2 Imprimir informacin desde nuestro formulario Hola <?php echo htmlspecialchars($_POST['nombre']); ?>. Tu tienes <?php echo (int)$_POST['edad']; ?> aos. Un ejemplo del resultado de esta secuencia de comandos puede ser: Hola Prez . Tu tienes 55 aos.

Obtener variables desde url


Pasar variables por URL Ambito de las variables El mbito de una variable es el lugar en el que sta funciona, es decir en donde la variable tiene validez. De no decir otra cosa, la variable tendr su mbito dentro de la pgina en la que fue creada, y a su vez dentro de la funcin en la que fue creada (ms adelante explicaremos las funciones), no pudiendo ser utilizada en otra pgina. Sin embargo, existen mtodos para pasar los valores o datos que almacena una variable a otra pgina, tal como hemos visto en el tema anterior con los formularios, pero tambin podemos pasar variables de una pgina a otra sin que stas sean creadas por los formularios . Traspaso de variables por enlaces Podemos pasar una variable a otra pgina cuando la abrimos con un enlace, mediante el siguiente cdigo: <a href="destino.php?variable1=valor1&variable2=valor2&... "> pasar variables</a> En el siguiente cdigo nos fijamos en el atributo href del enlace. En primer lugar escribimos la ruta o URL del destino de manera normal. Despus escribimos el signo de interrogacion ? y las variables que queremos pasar a la otra pgina. cada variable va separada de las dems por el signo &. De cada variable escribiremos su nombre, sin el signo dolar $, el signo igual, =, y despus su valor. El valor de la variable no debe ir entrecomillado, aunque esta sea una variable de texto.

Por lo tanto las variables son definidas al mismo tiempo que las mandamos. Veamos un ejemplo: <a href="bienvenida.php?var1=Hola, &var2=Bienvenido a esta pgina."> pgina de bienvenida</a> Este es un enlace hacia la pgina "bienvenida.php" que est en la misma carpeta que la pgina de envio. En este enlace mandamos dos variables, la variable $var1="Hola " y la variable $var2="Bienvenido a esta pgina.". Recoger datos en pgina de destino La segunda parte consiste en recoger las variables en la pgina de destino. Estas son traspasadas mediante el mtodo GET por lo que para recogerlas utilizaremos la variable del tipo $_GET['variable1']. En el ejemplo anterior, en la pgina "bienvenida.php" (pgina de destino) pondremos el siguiente cdigo para que aparezcan en pantalla: <?php $v1=$_GET['var1']; $v2=$_GET['var2']; echo $v1.$v2; ?> Mediante este mtodo creamos la variable a la vez que el enlace, por lo que no podemos pasar variables que tenamos creadas anteriormente, ya que el valor de stas no es reconocido en el valor que ponemos en el enlace. veamos cual es la solucin: Pasar variables ya definidas. Supongamos que en una pgina definimos una variable: $saludo="Hola a todos."; Una vez que est definida queremos mandarla a otra pgina mediante un enlace. No podemos escribir el enlace directamente con la expresin: <a href="destino,php?saludo=$saludo">Recibir saludo</a> Lo que recibiremos en la pgina de destino es una variable cuyo valor ser la palabra "$saludo", y no el contenido de la variable. para solucionar esto, debemos mandar el enlace dentro del cdigo PHP, como una instruccin hecho; es decir en la pgina de envo para mandar el enlace escribiremos: <?php echo "<a href='destino,php?saludo=$saludo'>Recibir saludo</a>"; ?> Ahora el valor de la variable que mandamos ser en la pgina de destino el mismo que el de la pgina de origen, por lo que si lo cambiamos en la pgina de origen, cambiar tambin en la de destino. Ejemplo de paso de variables Veamos cmo queda el ejemplo anterior: En la pgina de envo : "envio.php", escribimos las variables y las mandamos mediante un enlace. Esta es la pgina de envo; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html>

<head> <title>Pgina de envo</title> </head> <body> <h1>Envo de variables a otra pgina.</h1> <?php $a="Hola, "; $b="bienvenido a mi pgina"; echo "Enviar las siguientes variables:<br/>"; echo "\$a = $a <br/>"; echo "\$b = $b <br/>"; ?> <p>Pulsar el siguiente enlace</p> <?php echo "<a href='destino.php?a=$a&b=$b'>Enviar variables</a>"; ?> </body> </html> En la pgina de destino recibiremos las variables mediante el mtodo GET y las sacamos en pantalla: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>pgina de destino</title> </head> <body> <h1>Al abrir esta pgina se han pasado las siguientes variables:</h1> <?php $a=$_GET['a']; $b=$_GET['b']; echo "<p>variable \$a : $a"; echo "<p>variable \$b : $b"; ?> </body> </html>

You might also like