Programación en PHP/Variables
Introducción
editarEn PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas.
Los nombres de variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable válido tiene que empezar con una letra o un carácter de subrayado, seguido de cualquier número de letras, números y caracteres de subrayado.
Las variables en PHP se asignan, como en muchos otros lenguajes, con el símbolo igual (=).
Nota: $this es una variable especial que no puede ser asignada.
Un ejemplo:
<?php
$var = 12;
$Var = 'Andrés';
echo "$var $Var"; // Imprime: 12 Andrés
Inicialización y asignación de variables
editarPHP es un lenguaje no tipado. Esto significa que las variables no necesitan ser inicializadas y su tipo de dato no solo no precisa ser indicado, sino que éste puede cambiar. PHP simplemente sabe el tipo de dato que se utiliza en cada momento dependiendo del contexto en que se utilice.
Por ejemplo:
<?php
$var1 = 12; // $var1 es un integer
$var2 = 12.3; // $var2 es un float
$var2 = 'hola'; // $var2 es ahora un string
$var2 = '13' + 1;// $var2 es ahora un integer
echo $var2; // Imprime: 14
No es necesario iniciar variables en PHP, sin embargo, es una muy buena práctica. Las variables no inicializadas tienen un valor predeterminado de acuerdo a su tipo dependiendo del contexto en el que son usadas.
Variables por valor y variables por referencia
editarPor defecto, en PHP las variables se asignan por valor. Esto significa que al asignar una expresión a una variable, el valor de la expresión es copiado a la variable.
Por ejemplo:
<?php
$var1 = 'hola';
$var2 = $var1; // Asigna por valor (por defecto)
$var2 = 'adiós'; // Modifica $var2
echo $var1 . " y " . $var2; // Imprime: hola y adiós
Sin embargo, las variables también pueden asignarse por referencia. Esto significa que la nueva variable referencia a la variable original. En otras palabras, se convierte en un alias de (o simplemente apunta a) la variable original. Si una de las dos es cambiada, la otra también cambia su valor.
Para asignar por referencia, simplemente se antepone un signo ampersand (&) al comienzo de la variable cuyo valor se está asignando. Sólo las variables con nombre pueden ser asignadas por referencia.
Por ejemplo:
<?php
$var1 = 'hola';
$var2 = &$var1; // Asigna por referencia
$var2 = 'adiós'; // Modifica $var1
echo $var1 . " y " . $var2; // Imprime: adiós y adiós
Fuente: Trubiso
Variables predefinidas
editarPHP proporciona una gran cantidad de variables predefinidas a cualquier script que se ejecute. Algunas de ellas son:
- $GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global
- $_SERVER — Información del entorno del servidor y de ejecución
- $_GET — Variables HTTP GET
- $_POST — Variables HTTP POST
- $_FILES — Variables de Carga de Archivos HTTP
- $_REQUEST — Variables HTTP Request
- $_SESSION — Variables de sesión
- $_ENV — Variables de entorno
- $_COOKIE — Cookies HTTP
Ámbito de las variables
editarEl ámbito de una variable es el contexto dentro del cual está definida. La mayor parte de las variables sólo tienen un ámbito simple, que también abarca los ficheros incluidos y requeridos. Por ejemplo:
<?php
$var1 = 15;
include 'file.php';
La variable $var1 estará disponible también al interior del script file.php.
En el caso de las funciones, al contrario que el lenguaje C, las variables definidas en un ámbito global no pueden ser accedidas dentro de un ámbito local (la función):
<?php
$var1 = 15; // Ámbito global
function prueba()
{
echo $var1;
}
prueba(); // No produce salida
Variables globales accesibles
editarPara que una variable global sea accesible desde un ámbito local, como una función, se debe utilizar la palabra clave global:
<?php
$var1 = 15;
function prueba()
{
echo (global $var1);
}
prueba(); // Imprime 15
Otro método sería utilizar el array $_GLOBALS:
<?php
$var1 = 15;
function prueba()
{
echo $_GLOBALS['var1'];
}
prueba(); // Imprime 15
Variables estáticas
editarUna variable estática existe sólo en el ámbito local definido, pero no pierde su valor cuando la ejecución del programa abandona este ámbito.
Por ejemplo, el siguiente script:
<?php
function prueba()
{
$var1 = 0;
echo $var1;
$var1++;
}
Imprimiría 0 (cero) cada vez que se llamase a la función prueba(). Sin embargo, declarando una variable estática:
<?php
function prueba()
{
static $var1 = 0; // Variable estática
echo $var1;
$var1++;
}
Imprimiría una secuencia (0, 1, 2, 3, ...) cada vez que se llamase a la función prueba(), ya que el valor de $var1 se conserva estáticamente tras cada llamada a la función.
Las variables estáticas no se pueden redeclarar en la misma función (no se podría declarar otra vez static $var1).
Variables variables
editarUna variable variable es simplemente una variable cuyo nombre es el valor de otra variable. Por ejemplo:
<?php
$var1 = 'var2';
$$var1 = 1; // Se crea la variable $var2 = 1
echo $var2; // Imprime: 1
O también:
<?php
$var1 = 'var2';
${$var1} = 1; // Se crea la variable $var2 = 1
echo $var2; // Imprime: 1