Programación en PHP/Variables

De Wikilibros, la colección de libros de texto de contenido libre.
Ir a la navegación Ir a la búsqueda
← Comentarios Variables Cadenas →
Programación en PHP


Introducción[editar]

En 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[editar]

PHP 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[editar]

Por 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[editar]

PHP 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[editar]

El á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[editar]

Para 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[editar]

Una 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[editar]

Una 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