jueves, 15 de enero de 2009

Manual de PHP 8. Sintaxis Básica: Variables predefinidas

Las tablas de valores

En las tablas que veremos a continuación tendremos –clasificadas por tipos– algunas variables predefinidas de PHP con sus valores actuales.

Para observar dicha tabla haz lo siguiente:
bájate el fichero tabla.php y cópialo en el directorio htdocs de tu servidor apache (yo lo tengo en c:\xampp\htdocs\CursoPhp\tabla.php) o bien copia el texto del recuadro azul y cópialo a un fichero "tabla.php" y ubícalo en tu directorio del curso php.

A continuación teclea en tu navegador: "http://localhost/CursoPHP/tabla.php.




</TABLE><BR>

<span id="titulito">Variables de servidor</span><BR><BR>

<table align=center bgcolor='#FFFFff' border=1>
<?
print("<tr bgcolor='#Efefef'>");
foreach ($HTTP_SERVER_VARS as $nombre=>$clave){
print ("<td id='chiquiC'>$_SERVER['".$nombre."']</td>\n<td id='chiquiC'>$HTTP_SERVER_VARS['".$nombre."']</td><tr>");
print ("<td colspan= 2 id='normalC'><span id='negrita1'>");
if ($HTTP_SERVER_VARS[$nombre]){
print (chunk_split($HTTP_SERVER_VARS[$nombre],60,"<br>"));
}else{
print (" ");
}

print("</span></td><tr bgcolor='#efefef'>");
}
?>
</TABLE><BR>
<span id="titulito">Variables de entorno</span><BR><BR>

<table align=center bgcolor='#FFFFff' border=1>
<?
print("<tr bgcolor='#Efefef'>");
foreach ($HTTP_ENV_VARS as $nombre=>$clave){
print ("<td id='chiquiC'>$_ENV['".$nombre."']</td>\n<td id='chiquiC'>$HTTP_ENV_VARS['".$nombre."']</td><tr>");
print ("<td colspan= 2 id='normalC'><span id='negrita1'>");
if ($HTTP_ENV_VARS[$nombre]){
print (chunk_split($HTTP_ENV_VARS[$nombre],60,"<br>"));
}else{
print (" ");
}

print("</span></td><tr bgcolor='#efefef'>");
}
?>
</TABLE><BR>
<span id="titulito">Variables GLOBALES</span><BR><BR>
<table align=center bgcolor='#FFFFff' border=1>
<?
print("<tr bgcolor='#Efefef'>");
foreach ($GLOBALS as $nombre=>$clave){
if (!is_array($clave)){
print ("<td id='chiquiC'>$GLOBALS['".$nombre."']</td>\n<tr>");
print ("<td id='normalC'><span id='negrita1'>");
print (chunk_split($GLOBALS[$nombre],60,"<br>"));
}
print("</span></td><tr bgcolor='#efefef'>");
}
?>
</table>



Esta información (variables y valores) está siendo extraida de la configuración de tu servidor y de este documento.

Es muy probable que esté llamando tu atención el hecho de que dos nombres de variable distintos compartan el mismo valor.

Intentaremos ver el por qué de esa duplicidad.

Las variables de las columnas de la izquierda comienzan todas por $_, mientras que las de la derecha lo hacen por $HTTP y eso es algo muy importante.

En el primer caso se alude a las variables superglobales que hemos comentado en la página anterior, mientras que en el otro las variables no tienen ese carácter.

Razones de la duplicidad

La duplicidad de variables se justifica por lo siguiente: Las variables superglobales se introdujeron en PHP a partir de la versión 4.1.0 y no existían con anterioridad.

Con muy buen criterio, los desarrolladores PHP optaron por mantener las variables predefinidas de las versiones anteriores para evitar que los programadores que migraran sus aplicaciones a estas nuevas versiones de PHP se vieran obligados a reescribir el código de sus scripts.

Es por esta razón, por la que se mantienen dos variables distintas para recoger el mismo valor.

Observa la sintaxis de los nombres de las variables y comprobarás la similitud que existe entre ambas. Los corchetes y sus contenidos son exactamente iguales en ambos casos.

Tal es el caso de estas dos, que, por cierto, devuelven en número de la IP a través de la que está accediendo el usuario a nuestro servidor:

$_SERVER['REMOTE_ADDR']
y
$HTTP_SERVER_VARS
['REMOTE_ADDR']

cuya similitud resulta evidente.

Aunque los valores de ambas variables van a ser siempre idénticos, no ocurre lo mismo con su ámbito.

Las primeras son de ámbito superglobal y no necesitan ser declaradas expresamente con globales cuando se trata de utilizar sus valores dentro de cualquier función.

En el segundo caso va a ser imprescindible que sean declaradas como globales antes de que sus valores puedan ser utilizados dentro de una función.

¿Nombres algo raros?

Probablemente te extrañará –justificadamente– la longitud y la estructura un tanto rara de estos nombres de variables. Cuando tratemos el tema de los arrays asociativos veremos que esa es la sintaxis habitual de ese tipo de variables.

Las nombres de las variables de cada uno de los tipos, sólo se diferencian en lo contenido entre los corchetes porque se trata de distintos elementos del mismo array asociativo y –tal como veremos– esa es la sintaxis típica de los array.

¿Para qué sirven?

No vamos a agobiarte con una enumeración de variables y contenidos, pero a poco que observes las tablas de valores te darás cuenta de que es muy abundante y muy importante la información que recogen.

Si analizas las variables de servidor te darás cuenta de que aparece un montón de información relativa a su configuración: nombre, rutas, nombres de páginas, IP del servidor, etcétera.

Con los demás tipos ocurre algo similar.


Los distintos tipos

Veamos los diferentes tipos de variables predefinidas que existen en PHP. Por ahora, no te preocupes demasiado sobre la forma de utilizarlas. Las incluimos aquí como una simple enumeración y con una breve descripción de su utilidad.

En temas posteriores haremos referencia a ellas. Por el momento nos bastará con conocer su existencia.

Estamos viendo los valores de las variables de de entorno (ENV) y las de servidor (SERVER), pero, además de ellas, existen algunas otras cuyos nombres y utilidades vamos a comentarte.

Variables características:

argv Array de argumentos pasados en la ejecución del script.
$_SERVER['argc'] Número de parametros pasados al script en su ejecución.
$_SERVER['PHP_SELF'] Nombre del script que se está ejecutando
$_COOKIE Array asociativo de pares (clave,valor) pasados a través de cookies
$_GET Array asociativo de pares (clave,valor) pasados a través de GET
$_POST Array asociativo de pares (clave,valor) pasados a través de POST
$_FILES Array asociativo que contiene información de los ficheros recibidos mediante POST
$_ENV Array asociativo de pares (clave,valor) del entorno
$_SERVER Array asociativo de pares (clave,valor) del servidor
$_SESSION Array asociativo de pares (clave,valor) de sesion


Variables de sesión

Las identificaremos por los nombres $_SESSION o por $HTTP_SESSION_VARS.

Este tipo de variables las utilizaremos cuando hagamos mención al uso de sesiones.

La utilización de sesiones –ya abundaremos en ello– es una forma de recoger, de forma temporal en un documento del mismo carácter, información específica generada a través de los accesos de cada uno de los usuarios.

El carácter efímero de las sesiones seguramente lo has comprobado más de una vez cuando al actualizar una página te ha aparecido un mensaje diciendo que la sesion ha caducado.

Variables del método POST

Las identificaremos por los nombres $HTTP_POST_VARS o por $_POST.

Este tipo de variables –que utilizaremos con frecuencia– recogen la información que se envia desde el cliente para ser utilizada por el servidor.

Recuerda el carácter dinámico de PHP y que ese dinamismo (interacción clienteservidor) requiere que el servidor guarde los datos remitidos por el cliente.

Variables del método GET

Las identificaremos por los nombres $HTTP_GET_VARS o por $_GET

Son muy similares a las anteriores. La existencia de los dos tipos se justifica porque también existen dos tipos de métodos (maneras) de enviar datos desde el cliente hasta el servidor.

Cuando el método de envío es el llamado GET los datos se recogen en variables de este tipo, y, por el contrario, si ese método envío fuera POST se recogerían en aquellas.

Variables de transferencia de ficheros

Las identificaremos por el nombre $HTTP_FILES_VARS o por $_FILES.

Para el caso de transferencia de ficheros desde el cliente al servidor«subir ficheros»– es necesario un procedimiento distinto de los anteriores.

Será en este caso cuando se utilicen variables de este tipo.

El tipo GLOBALS

A diferencia de las anteriores, las variables de este tipo disponen de una sintaxis única –$GLOBALS– sin que quepa ninguna otra opción.

Su finalidad es recoger en una tabla los nombres de todas la variables establecidas como globales –en cada momento– así como sus valores.

Conocida la existencia de los diferentes tipos de variables predefinidas y vista esta tabla –a modo de ejemplo de su utilidad– no será preciso que profundicemos más en el asunto.

Lo trataremos en el momento en el que tengamos que hacer uso de cada una de ellas.








Fuente:
Página del ifstic: http://www.isftic.mepsyd.es/formacion/enred/

No hay comentarios: