Manual Completo Php 5xx - 5. Lenguaje Avanzado 2 - 2012-10-08
-
Upload
edwin-valencia -
Category
Documents
-
view
235 -
download
1
description
Transcript of Manual Completo Php 5xx - 5. Lenguaje Avanzado 2 - 2012-10-08
Referencias Explicadas
¿Qué son las Referencias? Las Referencias en PHP son medios de acceder al mismo contenido de una variable mediante
diferentes nombres. No son como los punteros de C; por ejemplo, no se puede realizar aritmética de
punteros con ellas, realmente no son direcciones de memoria, etc. Véase ¿Qué NO son las
Referencias? para más información. Las referencias son alias de la tabla de símbolos. Observe que en
PHP el nombre de la variable y el contenido de la variable son cosas diferentes, por lo que el mismo
contenido puede tener diferentes nombres. La analogía más próxima es con los archivos y los
nombres de archivos de Unix - los nombres de variables son entradas de directorio, mientras que el
contenido de las variables es el archivo en sí. Las referencias se pueden vincular a enlaces duros en
sistemas de archivos Unix.
¿Qué hacen las referencias?
Hay tres operaciones básicas que se realizan usando referencias: asignar por referencia, pasar por referencia, y devolver por referencia. En esta sección se dará una introducción a estas operaciones, con enlaces para una lectura complementaria.
Asignar por Referencia
En la primera de estas operaciones, las referencias de PHP permiten hacer que dos variables hagan referencia al mismo contenido. Es decir, cuando se hace:
<?php
$a =& $b;
?>
significa que $a y $b apuntan al mismo contenido.
Nota:
$a y $b aquí son completamente iguales. $a no está apuntando a $b o viceversa. $a y $b están apuntando al mismo lugar.
Nota:
Si se asigna, pasa, o devuelve una variable no definida por referencia, la variable se creará.
Ejemplo #1 Usar referencias con variables no definidas
<?php
function foo(&$var) { }
foo($a); // $a es "creada" y asignada a null
$b = array();
foo($b['b']);
var_dump(array_key_exists('b', $b)); // bool(true)
$c = new StdClass;
foo($c->d);
var_dump(property_exists($c, 'd')); // bool(true)
?>
Se puede usar la misma sintaxis con funciones que devuelven referencias y con el operador new (desde PHP 4.0.4 y anterior a PHP 5.0.0):
<?php
$foo =& find_var($bar);
?>
Desde PHP 5, new devuelve una referencia automáticamente, por lo que usar =& en este contexto es
obsoleto y produce un mensaje E_DEPRECATED en PHP 5.3 y posteriores, y un mensaje E_STRICT en
versiones anteriores. (Técnicamente, la diferencia es que, en PHP 5, las variables de objetos, como
los recursos, son meros punteros a la información del objeto actual, por lo que estas referencias a
objetos no son "referencias" en el mismo sentido usado antes (alias). Para más información,
véase Objetos y referencias.)
Advertencia
Si se asigna una referencia a una varible declarada global dentro de una función, la referencia será visible sólo dentro de la función. Se puede evitar esto usando la matriz $GLOBALS.
Ejemplo #2 Refenciar variables globales dentro de funciones
<?php
$var1 = "Variable de ejemplo";
$var2 = "";
function referencias_globales($usar_globals)
{
global $var1, $var2;
if (!$usar_globals) {
$var2 =& $var1; // visible sólo dentro de la función
} else {
$GLOBALS["var2"] =& $var1; // visible también en el contexto global
}
}
referencias_globales(false);
echo "var2 está establecida a '$var2'\n"; // var2 está establecida a ''
referencias_globales(true);
echo "var2 está establecida a '$var2'\n"; // var2 está establecida a 'Variable de ejemplo'
?>
Piense en global $var; como simplificación de $var =& $GLOBALS['var'];. De este modo, al
asignar otra referencia a $var sólo cambia la referencia de la variable local.
Nota:
Si se asigna un valor a una variable con referencias en una sentencia foreach, también se modifican las referencias.
Ejemplo #3 Referencias y la sentencia foreach
<?php
$ref = 0;
$fila =& $ref;
foreach (array(1, 2, 3) as $fila) {
// hacer algo
}
echo $ref; // 3 - último elemento de la matriz iterada
?>
Mientras que no sea estrictamente una asignación por referencia, las expresiones creadas con el constructor de lenguaje array() también pueden comportarse como tales prefijando & al elemento del array a añadir. Ejemplo:
<?php
$a = 1;
$b = array(2, 3);
$arr = array(&$a, &$b[0], &$b[1]);
$arr[0]++; $arr[1]++; $arr[2]++;
/* $a == 2, $b == array(3, 4); */
?>
Observe, sin embargo, que las referencias dentro de arrays son potencialmente peligrosas. Realizar una asignación normal (no por referencia) con una referencia en el lado derecho no convierte el lado izquierdo en una referencia, pero las referencias dentro de arrays son conservadas en estas asignaciones normales. Esto también se aplica a las llamadas a funciones donde el array es pasado por valor. Ejemplo:
<?php
/* Asignación de variables escalares */
$a = 1;
$b =& $a;
$c = $b;
$c = 7; //$c no es una referencia; no cambia $a o $b
/* Asignación de variables de array */
$arr = array(1);
$a =& $arr[0]; // $a y $arr[0] son el mismo conjunto de referencias
$arr2 = $arr; // ¡no es una asignación por referencia!
$arr2[0]++;
/* $a == 2, $arr == array(2) */
/* ¡El contenido de $arr se cambia incluso si no es una referencia! */
?>
En otras palabras, el comportamiento de las referencias de arrays está definido en una base
elemento-por-elemento; el comportamiento de las referencias de elementos individuales está
desasociado del estado de la referencia del array contenedor.
Pasar por Referencia
Lo segundo que hacen las referencias es pasar variables por referencia. Esto se lleva a cabo haciendo que una variable local en una función y una variable en el ámbito de la llamada referencien al mismo contenido. Ejemplo:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
?>
hará que $a sea 6. Esto sucede porque en la función foo la variable $var hace referencia al mismo
contenido que $a. Para más información sobre esto, lea la sección pasar por referencia.
Devolver por Referencia
Lo tercero que hacen las referncias es devolver por referencia.
¿Qué NO son las Referencias?
Como se dijo antes, las referencias no son punteros. Es decir, la siguiente construcción no hará lo que se esperaba:
<?php
function foo(&$var)
{
$var =& $GLOBALS["baz"];
}
foo($bar);
?>
Lo que sucede es que $var en foo será ligada con $bar en la llamada, pero entonces será religada
con $GLOBALS["baz"]. No hay forma de ligar $bar en el ámbito de la llamada a otra cosa usando el
mecanismo de referencia, ya que $bar no está disponible en la función foo (está representada
por $var, pero $varsólo tiene el contenido de la variable y no la vinculación nombre-a-valor en la
tabla de símbolos de llamada). Se puede usar devolver referencias para referencias variables
seleccionadas por la función.
Pasar por Referencia
Se puede pasar una variable por referencia a una función y así hacer que la función pueda modificar la variable. La sintaxis es la siguiente:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a es 6 aquí
?>
Nota: No existe ningún signo de referencia en una llamada a una función - sólo en la definición de la función. Las definiciones de funciones por sí solas son suficientes para pasar correctamente el argumento por referencia. A partir de PHP 5.3.0, se obtendrá una advertencia diciendo que "call-time pass-by-reference" (pasar por referencia en tiempo de llamada) está obsoleto cuando se use & en foo(&$a);. A partir de PHP 5.4.0, el paso por referencia en tiempo de llamada ha sido eliminado, por lo que su uso emitirá un error fatal.
Se puede pasar por referencia lo siguiente:
� Variables, esto es, foo($a) � Nuevas declaraciones, esto es, foo(new foobar()) � Referencias devueltas desde funciones, esto es:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Vea más sobre devolver por referencia.
Ninguna otra expresión debería pasarse por referencia, ya que el resultado no está definido. Por ejemplo, los siguientes ejemplos de pasar por referencia no son válidos:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Observe que falta el &
{
$a = 5;
return $a;
}
foo(bar()); // Produce un error fatal a partir de PHP 5.0.5
foo($a = 5); // Expresión, no una variable
foo(5); // Produce un error fatal
?>
Estos requerimientos son para PHP 4.0.4 y posterior.
Devolver Referencias
Devolver por referencia es útil cuando se quiere usar una función para encontrar a qué variable debería estar vinculada una referencia. No use devolver por referencia para aumentar el rendimiento. El motor optimizará automáticamente esto por sí mismo. Hay que devolver referencias sólo cuando se tenga una razón técnicamente válida para hacerlo. Para devolver referencias use esta sintaxis:
<?php
class foo {
public $valor = 42;
public function &obtenerValor() {
return $this->valor;
}
}
$obj = new foo;
$miValor = &$obj->obtenerValor(); // $miValor es una referencia a $obj->valor, que es 42.
$obj->valor = 2;
echo $miValor; // imprime el nuevo valor de $obj->valor, esto es, 2.
?>
En este ejemplo, la propiedad del objeto devuelto por la función obtenerValor debería estar
establecida, no la copia, como si estuviera sin usar la sintaxis de referencia.
Nota: A diferencia de pasar un parámetro, aquí se tiene que usar & en ambos lugares - para indicar que se quiere devolver por referencia, no una copia, y para indicar que la vinculación por referencia, en vez de la asignación normal, debería ser hecha para $miValor.
Nota: Si se intenta devolver una referencia desde una función con la sintaxis: return ($this->valor);, no funcionará ya que se está intentando devolver el resultado de una expresión, y no de una variable, por referencia. Sólo se puede devolver variables por referencia desde una función - nada más. Desde PHP 4.4.0 en la rama PHP 4, y PHP 5.1.0 en la rama PHP 5, se emite un error E_NOTICE si el código intenta devolver una expresión dinámica o un resultado del operador new.
Para usar la referencia retornada, se debe usar la asignación por referencia:
<?php
function &collector() {
static $collection = array();
return $collection;
}
$collection = &collector();
$collection[] = 'foo';
?>
Para pasar la referencia retornada a otra función que espera una referencia se puede usar la
siguiente sintaxis:
<?php
function &collector() {
static $collection = array();
return $collection;
}
array_push(collector(), 'foo');
?>
Nota: Observe que array_push(&collector(), 'foo'); no funcionará, resultará en un error fatal.
Destruir Referencias
Cuando se destruye una referencia, se rompe el vínculo entre el nombre de la variable y el contenido de la variable. Esto no significa que el contenido de la variable sea destruida. Por ejemplo:
<?php
$a = 1;
$b =& $a;
unset($a);
?>
no destruirá $b, sólo $a.
De nuevo, podría ser útil pensar en esto como análogo a una llamada a unlink de Unix.
Ubicar las Referencias Muchas construcciones sintácticas de PHP están implementadas mediante el mecanismo de
referencia, por lo que todo lo mencionado aquí sobre la vinculación de referencias también se aplica a
estas construcciones. Algunas construcciones, como pasar y devolver por referencia, han sido
mencionadas antes. Otras construcciones que usan referencias son:
Referencias globales
Cuando se declara una variable como global $var, de hecho se está creando una referencia a una variable global. Es decir, esto es lo mismo que:
<?php
$var =& $GLOBALS["var"];
?>
Esto también significa que al destruir $var no se destruirá la variable global.
$this En un método de un objeto, $this es siempre una referencia al objeto que realiza la llamada.
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.
Véase también la pregunta frecuente titulada "¿Cómo me afecta register_globals?"
Superglobals
Superglobals — Superglobals son variables internas que están disponibles siempre en todos los ámbitos
Report a bug
Descripción
Algunas variables predefinidas en PHP son "superglobales", lo que significa que están disponibles en todos los ámbitos a lo largo del script. No es necesario emplear global $variable; para acceder a ellas dentro de las funciones o métodos.
Las variables superglobals son:
� $GLOBALS � $_SERVER � $_GET � $_POST � $_FILES � $_COOKIE � $_SESSION � $_REQUEST � $_ENV
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Las superglobals son añadidas a
PHP.
Report a bug
Notas
Nota: Disponibilidad de variables
Por defecto, todas las superglobals están disponibles pero hay directivas que afectan a su disponibilidad. Para más información, véase la documentacion de variables_order.
Nota: Tratando con register_globals
Si la directiva obsoleta register_globals tiene el valor on entonces las variables están tambien disponibles en el ámbito global del código. Por ejemplo, $_POST['foo'] tambien existirá como $foo.
Para información relacionada, consulte el FAQ titulado "¿Cómo puede afectarme register_globals?"
Nota: Variables variables
Las variables superglobals no pueden ser usadas como variables variables dentro de funciones o métodos de clase.
Report a bug
Ver también
� ámbito de las variables � La directiva variables_order � La extensión filter
$GLOBALS
(PHP 4, PHP 5)
$GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global
Report a bug
Descripción
Es un array asociativo que contiene las referencias a todas la variables que están definidas en el ámbito global del script. Los nombres de las variables son las claves del array.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $GLOBALS
<?php
function test() {
$foo = "variable local";
echo '$foo en el ámbito global: ' . $GLOBALS["foo"] . "\n";
echo '$foo en el ámbito simple: ' . $foo . "\n";
}
$foo = "Contenido de ejemplo";
test();
?>
El resultado del ejemplo sería algo similar a:
$foo en el ámbito global: Contenido de ejemplo
$foo en el ámbito simple: variable local Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Nota: Disponibilidad de las variables
A diferencia de todas las otras superglobals, $GLOBALS ha estado esencialmente siempre disponible en PHP.
$_SERVER
$HTTP_SERVER_VARS [obsoleto]
(PHP 4 >= 4.1.0, PHP 5)
$_SERVER -- $HTTP_SERVER_VARS [obsoleto] — Información del entorno del servidor y de ejecución
Report a bug
Descripción
$_SERVER es un array que contiene información, tales como cabeceras, rutas y localizaciones del código. Las entradas en este array son creadas por el servidor web. No existe garantía que cada servidor web proporcione todas estas entradas, ya que existen servidores que pueden omitir algunas o proporcionar otras que no se encuentran recogidas aquí. Un gran número de estas variables se encuentran recogidas en » especificación CGI 1.1, así que al menos debe esperar encontrar estas entradas.
$HTTP_SERVER_VARS contiene la misma información inicial, pero no es una variable superglobal.
(Fijese que $HTTP_SERVER_VARS y $_SERVER son diferentes variables y que por tanto PHP las trata
diferente).
Report a bug
Índices Puede encontrar o no los siguientes elementos en $_SERVER. Tenga en cuenta que si ejecuta PHP
desde línea de comando pocos o ninguno de los siguientes elementos estarán disponibles (o tendrán
algún significado).
'PHP_SELF'
El nombre del archivo de script ejecutándose actualmente, relativa al directorio raíz de
documentos del servidor. Por ejemplo, el valor de$_SERVER['PHP_SELF'] en un script
ejecutado en la dirección http://example.com/test.php/foo.bar será /test.php/foo.bar. La
constante__FILE__ contiene la ruta completa del fichero actual, incluyendo el nombre del
archivo. Si PHP se está ejecutando como un proceso de línea de comando, esta variable es el
nombre del script desde PHP 4.3.0. En anteriores versiones no estaba disponible.
'argv'
Array de los argumentos enviados al script. Cuando se ejecuta el script en línea de comando
se obtiene acceso a los parámetros de línea de comando con un estilo parecido a como sería
en C. Cuando se ejecuta el script mediante el método GET, contendrá la cadena de la consulta.
'argc'
Contiene el número de parámetros de línea de comando enviados al script (si se ejecuta en
línea de comando).
'GATEWAY_INTERFACE'
Número de revisión de la especificación CGI que está empleando el servidor, por ejemplo
'CGI/1.1'.
'SERVER_ADDR'
La dirección IP del servidor donde se está ejecutando actualmente el script.
'SERVER_NAME'
El nombre del host del servidor donde se está ejecutando actualmente el script. Si el script se
ejecuta en un host virtual se obtendrá el valor del nombre definido para dicho host virtual.
'SERVER_SOFTWARE'
Cadena de identificación del servidor dada en las cabeceras de respuesta a las peticiones.
'SERVER_PROTOCOL'
Nombre y número de revisión del protocolo de información a través del cual la página es
solicitada, por ejemplo 'HTTP/1.0'.
'REQUEST_METHOD'
Método de petición empleado para acceder a la página, es decir 'GET', 'HEAD', 'POST', 'PUT'.
Nota:
El script de PHP se considera terminado después de enviar las cabeceras (es decir después de producir cualquier resultado sin emplear buffers para el resultado) si el método de la petición empleado era HEAD.
'REQUEST_TIME'
Fecha Unix de inicio de la petición. Disponible desde PHP 5.1.0.
'REQUEST_TIME_FLOAT'
El timestamp del inicio de la solicitud, con precisión microsegundo. Disponible desde PHP
5.4.0.
'QUERY_STRING'
Si existe, la cadena de la consulta de la petición de la página.
'DOCUMENT_ROOT'
El directorio raíz de documentos del servidor en el cual se está ejecutando el script actual,
según está definida en el archivo de configuración del servidor.
'HTTP_ACCEPT'
Contenido de la cabecera Accept: de la petición actual, si existe.
'HTTP_ACCEPT_CHARSET'
Contenido de la cabecera Accept-Charset: de la petición actual, si existe. Por ejemplo: 'iso-
8859-1,*,utf-8'.
'HTTP_ACCEPT_ENCODING'
Contenido de la cabecera Accept-Encoding: de la petición actual, si existe. Por ejemplo:
'gzip'.
'HTTP_ACCEPT_LANGUAGE'
Contenido de la cabecera Accept-Language: de la petición actual, si existe. Por ejemplo:
'en'.
'HTTP_CONNECTION'
Contenido de la cabecera Connection: de la petición actual, si existe. Por ejemplo: 'Keep-
Alive'.
'HTTP_HOST'
Contenido de la cabecera Host: de la petición actual, si existe.
'HTTP_REFERER'
Dirección de la pagina (si la hay) que emplea el agente de usuario para la pagina actual. Es
definido por el agente de usuario. No todos los agentes de usuarios lo definen y algunos
permiten modificar HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor
del que no se puede confiar realmente.
'HTTP_USER_AGENT'
Contenido de la cabecera User-Agent: de la petición actual, si existe. Consiste en una cadena
que indica el agente de usuario empleado para acceder a la pagina. Un ejemplo típico
es: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre otras opciones, puede emplear dicho
valor conget_browser() para personalizar el resultado de la salida de la página en función de
las capacidades del agente de usuario empleado.
'HTTPS'
Ofrece un valor no vacío si el script es pedido mediante el protocolo HTTPS.
Nota: Tenga en cuenta que si se emplea ISAPI con IIS el valor será off si la petición no se ha realizado a través del protocolo HTTPS.
'REMOTE_ADDR'
La dirección IP desde la cual está viendo la página actual el usuario.
'REMOTE_HOST'
El nombre del host desde el cual está viendo la página actual el usuario. La obtención inversa del dns está basada en la REMOTE_ADDR del usuario.
Nota: Su servidor web debe estar configurado para crear esta variable. Por ejemplo en Apache necesita que exista HostnameLookups On dentro de httpd.conf. Consulte tambien gethostbyaddr().
'REMOTE_PORT'
El puerto empleado por la máquina del usuario para comunicarse con el servidor web.
'REMOTE_USER'
El usuario autenticado.
'REDIRECT_REMOTE_USER'
El usuario autenticado si la petición es redirigida internamente.
'SCRIPT_FILENAME'
La ruta del script ejecutándose actualmente en forma absoluta.
Nota:
Si un script se ejecuta mediante CLI como ruta relativa, como por ejemplo file.php o ../file.php, entonces$_SERVER['SCRIPT_FILENAME'] contendrá la ruta relativa especificada por el usuario.
'SERVER_ADMIN'
El valor dado a la directiva SERVER_ADMIN (de Apache) en el archivo de configuración del servidor web. Si el script se está ejecutando en un host virtual, el valor dado será el definido para dicho host virtual.
'SERVER_PORT'
El puerto de la máquina del servidor usado por el servidor web para la comunicación. Para las configuraciones por omisión, el valor será '80'; el empleo de SSL, por ejemplo, cambiará dicho valor al valor definido para el puerto HTTP seguro.
'SERVER_SIGNATURE'
Cadena que contiene la versión del servidor y el nombre del host virtual que son añadidas a las páginas generadas por el servidor, si esta habilitada esta funcionalidad.
'PATH_TRANSLATED'
Ruta de acceso basada en el sistema (no en el directorio raíz de documentos del servidor) del script actual, después de cualquier mapeo de virtual a real realizada por el servidor.
Nota: A partir de PHP 4.3.2, PATH_TRANSLATED no está definida de forma implícita en el SAPI de Apache 2, en comparación a la situación de Apache 1, donde era necesario establecer el mismo valor que la variable del servidor SCRIPT_FILENAME cuando no era proporcionada por Apache. Este cambio ha sido realizado para cumplir la especificación CGI donde PATH_TRANSLATED sólo debe existir si PATH_INFO esta definida. Los usuarios de Apache 2 pueden emplear AcceptPathInfo = On dentro de httpd.conf para definirPATH_INFO.
'SCRIPT_NAME'
Contiene la ruta del script actual. Esto es de utilidad para las páginas que necesiten apuntarse a si mismas. La constante __FILE__ contiene la ruta absoluta y el nombre del archivo actual incluido.
'REQUEST_URI'
La URI que se empleó para acceder a la página. Por ejemplo: '/index.html'.
'PHP_AUTH_DIGEST'
Cuando se hace autenticación Digest HTTP, esta variable se establece para el encabezado 'Authorization' enviado por el cliente (el cual se debe entonces usar para hacer la validación apropiada).
'PHP_AUTH_USER'
Cuando se hace autenticación HTTP, esta variable se establece para el nombre de usuario provisto por el usuario.
'PHP_AUTH_PW'
Cuando se hace autenticación HTTP, esta variable se establece para la clave provista por el usuario.
'AUTH_TYPE'
Cuando se hace autenticado HTTP, está variable se establece para el tipo de autenticación.
'PATH_INFO'
Contiene cualquier información sobre la ruta proporcionada por el cliente a continuación del nombre del fichero del script actual pero antecediendo a la cadena de la petición, si existe. Por ejemplo, si el script actual se accede a través de la
URLhttp://www.example.com/php/path_info.php/some/stuff?foo=bar, entonces $_SERVER['PATH_INFO'] contendrá /some/stuff.
'ORIG_PATH_INFO'
Versión original de 'PATH_INFO' antes de ser procesado por PHP.
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_SERVER que
deprecaba $HTTP_SERVER_VARS.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $_SERVER
<?php
echo $_SERVER['SERVER_NAME'];
?>
El resultado del ejemplo sería algo similar a:
www.example.com Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� Filtrado de datos
$_GET
$HTTP_GET_VARS [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_GET -- $HTTP_GET_VARS [obsoleta] — Variables HTTP GET
Report a bug
Descripción
Un array asociativo de variables pasado al script actual vía parámetros URL.
$HTTP_GET_VARS contiene la misma información, pero no es una superglobal. (Note
que $HTTP_GET_VARS y $_GET son diferentes variables y que PHP los usa de forma diferente)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introduzco $_GET y $HTTP_GET_VARS quedó
obsoleto.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $_GET
<?php
echo 'Hola ' . htmlspecialchars($_GET["nombre"]) . '!';
?>
Asumiendo que el usuario introduzco http://example.com/?nombre=Hannes El resultado del ejemplo sería algo similar a:
Hola Hannes! Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Nota:
Las variables GET son pasadas vía urldecode().
Report a bug
Ver también
� Manejo de variables externas � La extensión filter
$_POST
$HTTP_POST_VARS [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_POST -- $HTTP_POST_VARS [obsoleta] — Variables HTTP POST
Report a bug
Descripción
Un array asociativo de variables pasadas al script actual a través del método HTTP POST.
$HTTP_POST_VARS contiene la misma información inicial, pero no es una superglobal. (Nótese
que $HTTP_POST_VARS y $_POST son diferentes variables y que PHP las trata de forma distinta)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_POST y $HTTP_POST_VARS quedó
obsoleta.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $_POST
<?php
echo 'Hola ' . htmlspecialchars($_POST["nombre"]) . '!';
?>
Asumiendo que el usuario envió por el método POST nombre=Juan El resultado del ejemplo sería algo similar a:
Hola Juan! Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� Tratando con variables externas � La extensión filter
$_FILES
$HTTP_POST_FILES [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_FILES -- $HTTP_POST_FILES [obsoleta] — Variables de Carga de Archivos HTTP
Report a bug
Descripción
Una variable tipo array asociativo de elementos cargados al script actual a través del método POST.
$HTTP_POST_FILES contiene la misma información inicial, pero no es una superglobal. (Note
que $HTTP_POST_FILES y $_FILES son variables diferentes y que PHP las trata como tal)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_FILES,
haciendo $HTTP_POST_FILES obsoleta.
Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� move_uploaded_file() - Mueve un archivo subido a una nueva ubicación � Gestión de Carga de Archivos
$_REQUEST
(PHP 4 >= 4.1.0, PHP 5)
$_REQUEST — Variables HTTP Request
Report a bug
Descripción
Un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE.
Report a bug
Historial de cambios
Versión Descripción
5.3.0 Se introdujo request_order. Esta directiva afecta al contenido
de $_REQUEST.
4.3.0 Se eliminó la información $_FILES de $_REQUEST.
4.1.0 Se introdujo $_REQUEST.
Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Nota:
Cuando se ejecuta en la línea de comandos , no se incluirán las entradas argv y argc; ya que están presentes en el array $_SERVER
Nota:
Las variables en $_REQUEST se proporcionan al script a través de los mecanismos de entrada GET, POST, y COOKIE y por lo tanto pueden ser manipulados por el usuario remoto y no debe confiar en el contenido. La presencia y el orden de las variables listadas en este array se definen según la directiva de configuración PHP variables_order.
Report a bug
Ver también
� import_request_variables() - Importar variables GET/POST/Cookie en el ámbito global � Tratando con variables externas � La extensión filter
$_SESSION
$HTTP_SESSION_VARS [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_SESSION -- $HTTP_SESSION_VARS [obsoleta] — Variables de sesión
Report a bug
Descripción
Es un array asociativo que contiene variables de sesión disponibles para el script actual. Ver la documentación de Funciones de sesión para más información sobre su uso.
$HTTP_SESSION_VARS contiene la misma información inicial pero no es una superglobal. (Nótese
que $HTTP_SESSION_VARS y $_SESSION son diferentes variables y PHP las trata de forma distinta)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_SESSION y $HTTP_SESSION_VARS quedó
absoleta.
Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� session_start() - Iniciar una nueva sesión o reanudar la existente
$_SESSION
$HTTP_SESSION_VARS [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_SESSION -- $HTTP_SESSION_VARS [obsoleta] — Variables de sesión
Report a bug
Descripción
Es un array asociativo que contiene variables de sesión disponibles para el script actual. Ver la documentación de Funciones de sesión para más información sobre su uso.
$HTTP_SESSION_VARS contiene la misma información inicial pero no es una superglobal. (Nótese
que $HTTP_SESSION_VARS y $_SESSION son diferentes variables y PHP las trata de forma distinta)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_SESSION y $HTTP_SESSION_VARS quedó
absoleta.
Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� session_start() - Iniciar una nueva sesión o reanudar la existente
$_ENV
$HTTP_ENV_VARS [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_ENV -- $HTTP_ENV_VARS [obsoleta] — Variables de entorno
Report a bug
Descripción
Una variable tipo array asociativo de variables pasadas al script actual a través del método del entorno.
Estas variables son importadas en el espacio de nombres global de PHP desde el entorno bajo el que
está siendo ejecutado el intérprete PHP. Muchas son entregadas por el intérprete de comandos bajo
el que PHP está corriendo y diferentes sistemas suelen tener diferentes tipos de intérpretes de
comandos, una lista definitiva es imposible. Por favor consulte la documentación de su intérprete de
comandos para una lista de las variables de entorno que se definen.
Otras variables de entorno incluyen las variables CGI, colocadas allí independientemente de que PHP
esté siendo ejecutado como módulo del servidor o procesador CGI.
$HTTP_ENV_VARS contiene la misma información inicial, pero no es una superglobal. (Note
que $HTTP_ENV_VARS y $_ENV son variables diferentes y que PHP las trata como tal)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_ENV,
haciendo $HTTP_ENV_VARS obsoleta.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $_ENV
<?php
echo '¡Mi nombre de usuario es ' . $_ENV["USER"] . '!';
?>
Asumiendo que "bjori" ejecuta este script El resultado del ejemplo sería algo similar a:
¡Mi nombre de usuario es bjori! Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� getenv() - Obtiene el valor de una variable de entorno � La extensión filter
$_COOKIE
$HTTP_COOKIE_VARS [obsoleta]
(PHP 4 >= 4.1.0, PHP 5)
$_COOKIE -- $HTTP_COOKIE_VARS [obsoleta] — Cookies HTTP
Report a bug
Descripción
Una variable tipo array asociativo de variables pasadas al script actual a través de Cookies HTTP.
$HTTP_COOKIE_VARS contiene la misma información inicial, pero no es una superglobal. (Note
que $HTTP_COOKIE_VARS y $_COOKIE son variables diferentes y que PHP las trata como tal)
Report a bug
Historial de cambios
Versión Descripción
4.1.0 Se introdujo $_COOKIE,
haciendo $HTTP_COOKIE_VARS obsoleta.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $_COOKIE
<?php
echo '¡Hola ' . htmlspecialchars($_COOKIE["nombre"]) . '!';
?>
Asumiendo que la cookie "nombre" ha sido definida anteriormente El resultado del ejemplo sería algo similar a:
¡Hola Juan! Report a bug
Notas
Nota:
Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.
Report a bug
Ver también
� setcookie() - Enviar una cookie � Gestión de variables externas � La extensión filter
$php_errormsg
(PHP 4, PHP 5)
$php_errormsg — El último mensaje de error
Report a bug
Descripción
$php_errormsg es una variable que contiene el texto del último mensaje de error generado por PHP. Esta variable solo está disponible en el entorno en donde el error ocurrió y solamente funcionará si la opción de configuración track_errors está activada on (por defecto es off).
Nota: Esta variable solamente está disponible cuando la directiva track_errors está activada en el php.ini.
Advertencia
Si el usuario ha definido un controlador de errores ( set_error_handler()), $php_errormsg tendrá un
valor solamente si el controlador de errores devuelve FALSE
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $php_errormsg
<?php
@strpos();
echo $php_errormsg;
?>
El resultado del ejemplo sería algo similar a:
Wrong parameter count for strpos()
$HTTP_RAW_POST_DATA
(PHP 4, PHP 5)
$HTTP_RAW_POST_DATA — Datos POST sin tratar
Report a bug
Descripción
$HTTP_RAW_POST_DATA contiene los datos POST sin tratar. Véase always_populate_raw_post_data
add a noteUser Contributed Notes $HTTP_RAW_POST_DATA
Ray dot Paseur at GMail dot com 12-Nov-2009 07:33
To get the Raw Post Data:
<?php $postdata = file_get_contents("php://input"); ?>
Please see the notes here:
http://us.php.net/manual/en/wrappers.php.php
$http_response_header
(PHP 4 >= 4.0.4, PHP 5)
$http_response_header — Encabezados de respuesta HTTP
Report a bug
Descripción
El array $http_response_header es similar a la functión get_headers(). Cuando se hace uso de HTTP wrapper, $http_response_header será poblado con los encabezados de respuesta HTTP. $http_response_header será creada en el ámbito global.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $http_response_header
<?php
function get_contents() {
file_get_contents("http://example.com");
var_dump($http_response_header);
}
get_contents();
var_dump($http_response_header);
?>
El resultado del ejemplo sería algo similar a:
array(9) {
[0]=>
string(15) "HTTP/1.1 200 OK"
[1]=> string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
[2]=>
string(29) "Server: Apache/2.2.3 (CentOS)"
[3]=>
string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT" [4]=>
string(27) "ETag: "280100-1b6-80bfd280""
[5]=>
string(20) "Accept-Ranges: bytes"
[6]=> string(19) "Content-Length: 438"
[7]=> string(17) "Connection: close"
[8]=>
string(38) "Content-Type: text/html; charset=UTF-8" }
NULL
$argc
(PHP 4, PHP 5)
$argc — El número de argumentos pasados a un script
Report a bug
Descripción
Contiene el número de argumentos pasados al script actual cuando se ejecuta desde la línea de comandos.
Nota: El nombre del script es pasado siempre como argumento del script, por lo tanto, el valor mínimo de $argc es 1.
Nota: Esta variable sólo está disponible cuando register_argc_argv está activado.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $argc
<?php
var_dump($argc);
?>
Cuando se ejecuta el ejemplo con: php script.php arg1 arg2 arg3 El resultado del ejemplo sería algo similar a:
int(4)
$argv
(PHP 4, PHP 5)
$argv — Array de argumentos pasados a un script
Report a bug
Descripción
Contiene un array de todos los argumentos pasados a un script cuando se ejecuta desde la línea de comandos.
Nota: El primer argumento $argv[0] siempre es el nombre del fichero que fue usado para ejecutar el script.
Nota: Esta variable no está disponible si register_argc_argv está deshabilitado.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de $argv
<?php
var_dump($argv);
?>
Cuando se ejecuta el ejemplo con: php script.php arg1 arg2 arg3 El resultado del ejemplo sería algo similar a:
array(4) {
[0]=>
string(10) "script.php" [1]=>
string(4) "arg1"
[2]=>
string(4) "arg2"
[3]=>
string(4) "arg3"
} Report a bug
Ver también
� getopt() - Obtiene las opciones de la lista de argumentos de la línea de comandos
Excepciones predefinidas
Tabla de contenidos
� Exception � ErrorException
Ver también las Excepciones SPL
Exception
(PHP 5 >= 5.1.0)
Introducción
Exception es la clase base para todas las excepciones.
Sinopsis de la Clase Exception {
/* Propiedades */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* Métodos */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )
final public Exception getPrevious ( void )
final public mixed getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )
final public string getTraceAsString ( void )
public string __toString ( void )
final private void __clone ( void )
}
Propiedades message
El mensaje de la excepción
code
El código de la excepción
file
El nombre del fichero donde se originó la excepción
line
La línea donde se originó la excepción
Tabla de contenidos
� Exception::__construct — Constructor de la excepción � Exception::getMessage — Obtiene el mensaje de Excepción � Exception::getPrevious — Devuelve la excepción anterior � Exception::getCode — Obtiene el código de Excepción � Exception::getFile — Obtiene el fichero en el que ocurrió la excepción � Exception::getLine — Obtiene la línea en donde ocurrió la excepción � Exception::getTrace — Obtiene el seguimiento de la pila � Exception::getTraceAsString — Obtiene el stack trace como cadena � Exception::__toString — Representación de la excepción en formato cadena � Exception::__clone — Clona la excepción
ErrorException
(PHP 5 >= 5.1.0)
Introducción
Una excepción de error.
Sinopsis de la Clase ErrorException extends Exception {
/* Propiedades */
protected int $severity ;
/* Métodos */
public __construct ([ string $message = "" [, int $code = 0 [, int $severity = 1 [, string $filename =
__FILE__ [, int $lineno = __LINE__ [,Exception $previous = NULL ]]]]]] )
final public int getSeverity ( void )
/* Métodos heredados */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public mixed Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
Propiedades severity
La gravedad de la excepción
Ejemplos Ejemplo #1 Use set_error_handler() para convertir mensajes de error en objetos
ErrorException. <?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");
/* Desencadenar la excepción */
strpos();
?>
El resultado del ejemplo sería algo similar a:
Fatal error: Uncaught exception 'ErrorException' with message 'Wrong parameter count for
strpos()' in /home/bjori/tmp/ex.php:8
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Wrong parameter...', '/home/bjori/php...',
8, Array)
#1 /home/bjori/php/cleandocs/test.php(8): strpos()
#2 {main} thrown in /home/bjori/tmp/ex.php on line 8
Tabla de contenidos
� ErrorException::__construct — Constructor de la Excepción � ErrorException::getSeverity — Obtiene la severidad de la excepción
Interfaces predefinidas
La interfaz Traversable
(No hay información de versión disponible, podría estar únicamente en SVN)
Introducción
Interfaz para detectar si una clase puede ser recorrida mediante foreach.
Una interfaz abstracta base no puede ser implementada sola. En su lugar, debe ser implementada con IteratorAggregate o con Iterator.
Nota:
Las clases internas que implementan esta interfaz pueden ser usadas en una construcción foreach y no necesitan implementar IteratorAggregate o Iterator.
Nota:
Este es un motor interno de interfaz que no puede ser implementado en scripts de PHP. Se debe emplear en su lugar o IteratorAggregate, o bien Iterator. Cuando se implementa una interfaz que extiende a Traversable, asegúrese de enumerara IteratorAggregate o Iterator antes de su nombre en la cláusula de implementación.
Sinopsis de la Interfaz Traversable {
}
Esta interfaz no tiene métodos; su único propósito es servir de interfaz base para todas las clases que se pueden recorrer.
La interfaz Iterator
(PHP 5 >= 5.0.0)
Introducción
Interfaz para iteradores externos u objetos que pueden ser iterados internamente por sí mismos.
Sinopsis de la Interfaz Iterator extends Traversable {
/* Métodos */
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
}
Iteradores Predefinidos
PHP ya ofrece un número de iteradores para muchas de las tareas del día a día. Véase la lista de iteradores SPL.
Ejemplos Ejemplo #1 Uso básico
Este ejemplo muestra el orden en el que se llaman a los métodos cuando se emplea un foreach con un iterator.
<?php
class myIterator implements Iterator {
private $position = 0;
private $array = array(
"firstelement",
"secondelement",
"lastelement",
);
public function __construct() {
$this->position = 0;
}
function rewind() {
var_dump(__METHOD__);
$this->position = 0;
}
function current() {
var_dump(__METHOD__);
return $this->array[$this->position];
}
function key() {
var_dump(__METHOD__);
return $this->position;
}
function next() {
var_dump(__METHOD__);
++$this->position;
}
function valid() {
var_dump(__METHOD__);
return isset($this->array[$this->position]);
}
}
$it = new myIterator;
foreach($it as $key => $value) {
var_dump($key, $value);
echo "\n";
}
?>
El resultado del ejemplo sería algo similar a:
string(18) "myIterator::rewind"
string(17) "myIterator::valid" string(19) "myIterator::current"
string(15) "myIterator::key"
int(0) string(12) "firstelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current" string(15) "myIterator::key"
int(1) string(13) "secondelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current" string(15) "myIterator::key"
int(2)
string(11) "lastelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
Tabla de contenidos
� Iterator::current — Devuelve el elemento actual � Iterator::key — Devuelve la clave del elemento actual � Iterator::next — Avanza al siguiente elemento
� Iterator::rewind — Rebobine la Iterator al primer elemento � Iterator::valid — Comprueba si la posición actual es válido
La interfaz IteratorAggregate
(PHP 5 >= 5.0.0)
Introducción
Para crear una interfaz externa Iterator.
Sinopsis de la Interfaz IteratorAggregate extends Traversable {
/* Métodos */
abstract public Traversable getIterator ( void )
}
Ejemplo #1 Uso básico
<?php
class myData implements IteratorAggregate {
public $property1 = "Public property one";
public $property2 = "Public property two";
public $property3 = "Public property three";
public function __construct() {
$this->property4 = "last property";
}
public function getIterator() {
return new ArrayIterator($this);
}
}
$obj = new myData;
foreach($obj as $key => $value) {
var_dump($key, $value);
echo "\n";
}
?>
El resultado del ejemplo sería algo similar a:
string(9) "property1"
string(19) "Public property one"
string(9) "property2"
string(19) "Public property two"
string(9) "property3"
string(21) "Public property three"
string(9) "property4"
string(13) "last property"
Tabla de contenidos
� IteratorAggregate::getIterator — Recuperar un Iterator externo
La interfaz ArrayAccess
(PHP 5 >= 5.0.0)
Introducción
Interfaz para proporcionar acceso a objetos como arrays.
Sinopsis de la Interfaz ArrayAccess {
/* Métodos */
abstract public boolean offsetExists ( mixed $offset )
abstract public mixed offsetGet ( mixed $offset )
abstract public void offsetSet ( mixed $offset , mixed $value )
abstract public void offsetUnset ( mixed $offset )
}
Ejemplo #1 Uso básico
<?php
class obj implements arrayaccess {
private $container = array();
public function __construct() {
$this->container = array(
"one" => 1,
"two" => 2,
"three" => 3,
);
}
public function offsetSet($offset, $value) {
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}
public function offsetExists($offset) {
return isset($this->container[$offset]);
}
public function offsetUnset($offset) {
unset($this->container[$offset]);
}
public function offsetGet($offset) {
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
}
$obj = new obj;
var_dump(isset($obj["two"]));
var_dump($obj["two"]);
unset($obj["two"]);
var_dump(isset($obj["two"]));
$obj["two"] = "A value";
var_dump($obj["two"]);
$obj[] = 'Append 1';
$obj[] = 'Append 2';
$obj[] = 'Append 3';
print_r($obj);
?>
El resultado del ejemplo sería algo similar a:
bool(true)
int(2) bool(false)
string(7) "A value"
obj Object (
[container:obj:private] => Array (
[one] => 1
[three] => 3
[two] => A value
[0] => Append 1 [1] => Append 2
[2] => Append 3
)
)
Tabla de contenidos
� ArrayAccess::offsetExists — Comprobar si existe o no un índice � ArrayAccess::offsetGet — Offset para recuperar � ArrayAccess::offsetSet — Inicializa un offset � ArrayAccess::offsetUnset — Destruye un offset
La interfaz Serializable
(PHP 5 >= 5.1.0)
Introducción
Interfaz para personalizar la serialización.
Las clases que implementan esta interfaz no soportan __sleep() ni __wakeup(). El método serialize se llama cuando una instancia requiere ser serializada. Esto no invoca __destruct() ni tiene ningún efecto adicional a menos que se programe dentro del método. Cuando los datos son deserializados, la clase es conocida y el correspondiente método unserialize() es llamado como constructor en lugar de llamar al método __construct(). Se puede ejecutar el constructor estándar en el método si fuera necesario.
Sinopsis de la Interfaz Serializable {
/* Métodos */
abstract public string serialize ( void )
abstract public void unserialize ( string $serialized )
}
Ejemplo #1 Uso básico
<?php
class obj implements Serializable {
private $data;
public function __construct() {
$this->data = "Mis datos privados";
}
public function serialize() {
return serialize($this->data);
}
public function unserialize($data) {
$this->data = unserialize($data);
}
public function getData() {
return $this->data;
}
}
$obj = new obj;
$ser = serialize($obj);
var_dump($ser);
$newobj = unserialize($ser);
var_dump($newobj->getData());
?>
El resultado del ejemplo sería algo similar a:
string(38) "C:3:"obj":23:{s:15:"Mis datos privados";}"
string(15) "Mis datos privados"
Tabla de contenidos
� Serializable::serialize — Representación en formato cadena de un objeto � Serializable::unserialize — Construye el objeto
La clase Closure
(PHP 5 >= 5.3.0)
Introducción
Clase usada para representar funciones anónimas.
Las funciones anónimas, implementadas en PHP 5.3, producían objetos de este tipo. Este hecho solía ser considerado como un detalle de implementación, pero ahora puede confiarse en él. Desde PHP 5.4, esta clase tiene métodos que permiten más control de las funciones anónimas después de que hayan sido creadas.
Además de los métodos listados aquí, esta clase también posse un método __invoke. Esto es por consistencia con otras clases que implementan la llamada mágica, ya que este método no se usa para llamar a la función.
Sinopsis de la Clase Closure {
/* Métodos */
__construct ( void )
public static Closure bind ( Closure $closure , object $newthis [, mixed $newscope = 'static' ] )
public Closure bindTo ( object $newthis [, mixed $newscope = 'static' ] )
}
Tabla de contenidos
� Closure::__construct — Constructor que anula la instanciación � Closure::bind — Duplicar un cierre con un objeto vinculado y ámbito de clase especificados � Closure::bindTo — Duplicar el cierre con un objeto vinculado y ámbito de clase nuevos
Opciones de contexto y parámetros
PHP ofrece varias opciones y parámetros de contexto que pueden ser usados con todas las envolturas del sistema de archivos y las secuencias. El contexto es creado con stream_context_create(). Las opciones son definidas con stream_context_set_option() y los parámetros con stream_context_set_params().
Opciones de contexto de sockets
Opciones de contexto de sockets — Listado de opciones de contexto de sockets
Report a bug
Descripción
Las opciones de contexto de sockets están disponibles para todas las envolturas que trabajan sobre sockets, como tcp, http y ftp.
Report a bug
Opciones
bindto
Usada para especificar la dirección IP (ya sea IPv4 o IPv6) y/o el número de puerto que PHP usará para acceder a la red. La sintaxis esip:puerto. Definir el número IP o de puerto como 0 producirá que el sistema lo elija por usted.
Nota:
Dado que FTP crea dos conexiones de socket durante la operación normal, no es posible especificar el número de puerto con esta opción.
backlog
Usado para limitar el número de conexiones pendientes en la cola de escucha del socket.
Nota:
Solamente se aplica a stream_socket_server().
Report a bug
Historial de cambios
Versión Descripción
5.1.0 Se agregó bindto.
5.3.3 Se
agregó backlog.
Report a bug
Ejemplos Ejemplo #1 Ejemplo de uso básico de bindto
<?php
// conectarse a internet usando la IP '192.168.0.100'
$opciones = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);
// conectarse a internet usando la IP '192.168.0.100' y el puerto '7000'
$opciones = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);
// conectarse a internet usando el puerto '7000'
$opciones = array(
'socket' => array(
'bindto' => '0:7000',
),
);
// crear el contexto...
$contexto = stream_context_create($opciones);
// ...y usarlo para recuperar los datos
echo file_get_contents('http://www.example.com', false, $contexto);
?>
Opciones de contexto de HTTP
Opciones de contexto de HTTP — Lista de opciones de contexto de HTTP
Report a bug
Descripción
Opciones de contexto para los transports http:// y https://.
Report a bug
Opciones
method string
GET, POST, o cualquier otro método HTTP que soporte el servidor remoto.
Por omisión, GET.
header string
Cabeceras adicionales que se envían en la petición. Los valores sobrescribirán los existentes (como por ejemplo User-agent:, Host:, oAuthentication:).
user_agent string
Valor de la cabecera User-Agent:. Sólo se utilizará si el user-agent no se ha especificado en la opción de contexto header vista arriba.
por omisión se utiliza el valor del ajuste user_agent en php.ini.
content string
Datos adicionales a enviar tras las cabeceras. Típicamente se utiliza con peticiones POST o PUT.
proxy string
URI que define la dirección de un servidor proxy (p.ej. tcp://proxy.example.com:5100).
request_fulluri boolean
Si vale TRUE, se utilizará toda la URI para construir la petición. (es decir, GET http://www.example.com/path/to/file.html HTTP/1.0). A pesar de que es un formato de petición no estándar, algunos servidores proxy requieren que sea así.
Por omisión FALSE.
follow_location integer
Seguir las redirecciones de las cabeceras Location. Establecer a 0 para deshabilitarlo.
Por omisión 1.
max_redirects integer
Número máximo de redirecciones a seguir. Un valor igual o menor a 1 indica que no se siga ninguna redirección.
Por omisión 20.
protocol_version float
Versión del protocolo HTTP.
Por omisión 1.0.
Nota:
Las versiónes de PHP anteriores a la 5.3.0 no implementa decodificación de transferencias fragmentadas. Si este valor es 1.1, es responsabilidad del programador cumplir con la
Versión Descripción
5.3.4 Añadido follow_location.
5.3.0 La opción protocol_version soporta decodificación de transferencias fragmentadas en caso de
valer 1.1.
5.2.10 Añadido ignore_errors.
5.2.10 El parámetro header puede ahora ser un array de índices numéricos.
5.2.1 Añadido timeout.
5.1.0 Añadido soporte para HTTPS mediante proxies HTTP.
5.1.0 Añadido max_redirects.
5.1.0 Añadido protocol_version.
versión 1.1.
timeout float
Tiempo de espera de lectura en segundos, especificado por un float (p.ej. 10.5).
Por omisión se utiliza el valor del ajuste default_socket_timeout de php.ini.
ignore_errors boolean
Captura el contenido incluso con códigos de estado de error.
Por omisión FALSE.
Report a bug
Historial de cambios Report a bug
Ejemplos Ejemplo #1 Captura una página y envía datos POST
<?php
$postdata = http_build_query(
array(
'var1' => 'contenido',
'var2' => 'doh'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://example.com/submit.php', false, $context);
?>
Ejemplo #2 Ignora las redirecciones per captura las cabeceras y el contenido
<?php
$url = "http://www.example.org/header.php";
$opts = array('http' =>
array(
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1'
)
);
$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);
// información de cabeceras y meta datos
// sobre el flujo
var_dump(stream_get_meta_data($stream));
// datos reales en $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>
Report a bug
Notas
Nota: Opciones de contexto del flujo de socket subyacente Hay soporte para opciones de contexto adicionales en el transporte subyacente Para flujos http://, deben consultarse las opciones de contexto del transporte tcp://. Para flujos https://, deben consultarse las opciones de contexto del transporte ssl://.
Nota: Línea de estado HTTP Cuando esta envultura sigue una redirección, el wrapper_data devuelto por stream_get_meta_data() no contiene necesariamente la línea de estado HTTP que realmente se aplica al contenido del índice 0.
array (
'wrapper_data' =>
array (
0 => 'HTTP/1.0 301 Moved Permantenly',
1 => 'Cache-Control: no-cache', 2 => 'Connection: close',
3 => 'Location: http://example.com/foo.jpg',
4 => 'HTTP/1.1 200 OK',
...
La primera petición devolvió un 301 (redirección permanente), de manera que la envoltura
automáticamente sigue la redirección para obtener una respuesta con código 200 (índice = 4).
Report a bug
Ver también
� http:// � Opciones de contexto de sockets � Opciones de contexto para SSL
Opciones de contexto para FTP
Opciones de contexto para FTP — Listado de opciones de contexto para FTP
Report a bug
Descripción
Opciones de contexto para transportes ftp:// y ftps://
Report a bug
Opciones
overwrite boolean
Permite sobrescribir archivos ya existentes en el servidor remoto. Se aplica sólo al modo de escritura (subida).
Defaults to FALSE.
resume_pos integer
Desplazamiento de archivo en donde iniciar la transferencia. Se aplica sólo al modo de lectura (descarga).
Por defecto es 0 (inicio del archivo).
proxy string
Petición FTP al proxy por medio de un servidor proxy http. Se aplica sólo a operaciones de lectura de archivos. Ejemplo:tcp://squid.example.com:8000.
Report a bug
Historial de cambios
Versión Descripción
5.1.0 Se añadió proxy.
5.0.0 Se
Versión Descripción
añadió overwrite y resume_pos.
Report a bug
Notas
Nota: Opciones subyacentes del contexto del flujo del socket Opciones adicionales de contexto pueden se soportadas por el transporte subyacente Para flujos ftp://, remitirse a las opciones de contexto para el transporte tcp://. Para flujos ftps://, remitirse a las opciones de contexto para el transporte ssl://.
Report a bug
Ver también
� ftp:// � Opciones de contexto de sockets � Opciones de contexto para SSL
Opciones de contexto para SSL
Opciones de contexto para SSL — Listado de opciones de contexto para SSL
Report a bug
Descripción
Opciones de contexto para transportes ssl:// y tls://
Report a bug
Opciones
verify_peer boolean
Requiere verificación del certificado SSL utilizado.
Por defecto es FALSE.
allow_self_signed boolean
Permite certificados auto-firmados. Requiere verify_peer.
Por defecto es FALSE
cafile string
Ubicación del archivo de la entidad emisora de certificados en el sistema de archivos local, la cual debe ser utilizada con la opción de contextoverify_peer para autenticar la identidad del par remoto.
capath string
Si no se específica cafile o si no se encuentra el certificado, el directorio al que apunta capath sera explorado en busca de un certificado apropiado. capath debe ser un directorio con el hash correcto.
local_cert string
Ruta hacia el archivo del certificado local en el sistema de archivos. Debe ser un archivo codificado con PEM el cual contenga el certificado y la llave privada. Puede, opcionalmente, contener la cadena de los emisores del certificado.
passphrase string
La frase de contraseña con la cual el archivo local_cert fue codificado.
CN_match string
El nombre común que se está esperando. PHP realizará comparaciones limitadas de comodines. Si el nombre común no coincide con esto, el intento de conexión fallará.
verify_depth integer
Abortar si la cadena de certificados es demasiado profunda.
Por defecto es no verificarlo.
ciphers string
Establece la lista de sistemas de cifrado disponibles. El formato de la cadena se describe en » ciphers(1).
Por defecto es DEFAULT.
capture_peer_cert boolean
Si se establece en TRUE, una opción de contexto peer_certificate será creada, conteniendo el certificado par.
capture_peer_cert_chain boolean
Si se establece en TRUE, una opción de contexto peer_certificate_chain será creada, conteniendo la cadena del certificado.
SNI_enabled boolean
Si se establece en TRUE, la indicación del nombre del servidor se activará. Activando SNI se permiten múltiples certificados en la misma dirección IP.
SNI_server_name string
Si se establece, entonces este valor se utilizará como nombre del servidor para la indicación de nombre de servidor. Si este valor no está establecido, entonces el nombre del servidor se supone basado en el nombre de host utilizado cuando se abre el flujo.
Historial de cambios
Versión Descripción
5.3.2 Se agregó SNI_enabled y SNI_server_name.
5.0.0 Se
agregó capture_peer_cert, capture_peer_chain and ciphers.
Notas
Nota: Debido a que ssl:// el es transporte subyacente para las envolturas https:// y ftps://, cualquier opción de contexto que aplique parassl:// también aplica para https:// y ftps://.
Nota: Para que SNI (Server Name Indication) esté disponible, entonces PHP se debe compilar con OpenSSL 0.9.8j o superior. Se utilizaOPENSSL_TLSEXT_SERVER_NAME para determinar si SNI está soportado.
Opciones de contexto para CURL
Opciones de contexto para CURL — Listado de opciones de contexto para CURL
Report a bug
Descripción
Las opciones de contexto para CURL están disponibles cuando la extensión CURL fue compilada usando la opción de configuración --with-curlwrappers .
Report a bug
Opciones
method string
GET, POST, o cualquier otro método HTTP soportado por el servidor remoto.
Por defecto es GET.
header string
Cabeceras adicionales a ser enviadas durante la petición. Los valores de esta opción sobrescribirán otros valores (como por ejemplo User-agent:, Host:, y Authentication:).
user_agent string
Valor a ser enviado con la cabecera User-Agent:.
Por defecto se usa la configuración user_agent de php.ini.
content string
Datos adicionales para ser enviados después de las cabeceras. Esta opción no se utiliza para peticiones GET o HEAD.
proxy string
URI que especifica la dirección del servidor proxy. (Por ejemplo tcp://proxy.example.com:5100).
max_redirects integer
El número máximo de redirecciones a seguir. Un valor de 1 o menos significa que no se siguen la redirecciones.
Por defecto es 20.
curl_verify_ssl_host boolean
Verifica el host.
Por defecto es FALSE
Nota:
Esta opción está disponible tanto para envolturas del protocolo http como del ftp.
curl_verify_ssl_peer boolean
Requiere verificación del certificado SSL utilizado.
Por defecto es FALSE
Nota:
Esta opción está disponible tanto para envolturas del protocolo http como del ftp.
Report a bug
Ejemplos Ejemplo #1 Obtener una página y enviar datos POST
<?php
$postdata = http_build_query(
array(
'var1' => 'some content',
'var2' => 'doh'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://example.com/submit.php', false, $context);
?>
Opciones de contexto Phar
Opciones de contexto Phar — Listado de opciones de contexto Phar
Report a bug
Descripción
Opciones de contexto para phar:// envoltura.
Report a bug
Opciones
comprimir int
Uno de Constantes de compresión Phar.
metadata mixed
Metadatos Phar. Ver Phar::setMetadata().
Contexto parámetros
Contexto parámetros — Contexto lista de parámetros
Report a bug
Descripción
Estos parametros se puede establecer en un contexto usando el la función stream_context_set_params().
Report a bug
Parámetros
notification callable
Una callable que se llamará cuando se produce un evento en una secuencia.
Véase stream_notification_callback() para más detalles.