Todo sobre variables

Una variable es un contenedor de información en memoria para su acceso rápido.

1. Simples

Las variables deben iniciar con un $ luego el nombre que es sensible a mayúsculas y minúsculas. Tiene que empezar con una letra, aunque pueden contener también números y _. No es necesario inicializar las variables, si declaraste el tipo asumen 0 o vacío ('') o falso.

$nombre = valor;
$nombre = 'Kike';
$n = 21;
$pi = 3.1416;
$flag = true;
$r = null;

$this es una variable especial que no puede ser asignada.

$nom = 'Juan';
$Nom = "Pedro";
echo $nom, $Nom;                      //JuanPedro (no deja espacio)
print $nom, $Nom;                     //Error
echo "Mis alumnos son: $nom y $Nom";  //Mis alumnos son: Juan y Pedro

2. Matrices

Es una variable que contiene múltiples datos a los cuales se accede mediante coordenadas. La clave puede ser un entero o una cadena, pero es opcional si no lo especificas empezada en cero. El valor contenido en cada coordenada puede ser de cualquier tipo. Los datos e tipo entero, float y boleano sera amoldado a entero. Un null sera amoldado a una cadena vacía.

$variable = array('Cero',.True.,2,null);
//Desde PHP 5.4
$variable = ['Cero',.True.,2,null];
$variable = [
	'0' => 'Cero',
	'dos' => 2,
	'99' => null,
];

Para ver todo el contenido de una matriz puedes usar var_dump()

var_dump($variable);

3. Objetos

Son instancias de clases definidas pro el programador, que pueden englobar otros tipos de valores y funciones que son específicos a la clase.

La definición básica de una clase comienza con la palabra reservada class, seguida de un nombre de clase, y continuando con un par de llaves que encierran las definiciones de las propiedades y métodos pertenecientes a dicha clase.

class clase{
   function uno((parametros)){
      ...
      return [valor];
   }
   function dos((parametros)){
      ...
      return [valor];
   }   
}
$cosa = new clase;
$cosa->uno();

Una clase puede heredar los métodos y propiedades de otra clase empleando la palabra reservada extends en la declaración de la clase. No es posible la extensión de múltiples clases; una clase sólo puede heredar de una clase base.

class clase2 extends clase{
   function tres([parametros]){
      ...
      return [valor];
   }
}
$cosa = new clase2;
$cosa->uno();
$cosa->tres();

4. Recursos

Los recursos son requeridos cuando PHP necesita comunicarse con algún programa externo (base de datos o programa grafico) que asigna memoria del servidor en función a la petición de PHP.

$mysqli = new mysqli('servidor','usuario','clave','base de datos');
...
$mysqli->close();
$mysqli = NULL;
unset($mysqli);  //PHP 5

5. Ambito de las variables

El ámbito de una variable es el contexto dentro del que la variable está definida. La mayor parte de las variables PHP sólo tienen un ámbito simple. Este ámbito simple también abarca los ficheros incluídos y los requeridos.

Para que una variable exista mas allá del archivo en que fue creada, de debe incluir la clausula Global en su declaración.

global $a, $b;

Otra manera de obtener variables globales en mediante $_SESSION[].

6. Ciclo de vida de las variables

Las variables permanecen en memoria desde que son asignadas hasta que son destruidas explicitamente con la función unset().

Ambito de las variables
AmbitoDescripción
LocalDeclarada en una función de usuario. Solo serán accesibles dentro de dicha función.
staticSolo declara la variable si aun no existe.
globalDeclaradas dentro de una función de usuario asume el valor que tenia fuera de la función. Ver ejemplo.
Super globalDeclarar como una matriz (desde PHP 5)
$nombre = 'Kike';
function uno(){
   $nombre = 'Mily';
}
uno();
echo $nombre;   //Kike

Como se soluciona esto en PHP ?

$nombre = 'Kike';
function uno(){
   global $nombre;   //Debe estar dentro de función
   $nombre = 'Mily';
}
uno();
echo $nombre;   //Mily

Una variable creada dentro de la función es local es decir solo está disponible dentro de la función, así tenga el mismo nombre de una variable que está fuera de ella. Ver ejemplo

Veamos otro ejemplo

function cuenta(){
    static $x = 0;
    $x++;
    echo $x,"\n";
}
cuenta();   //1
cuenta();   //2
cuenta();   //3
$x = 0;
function cuenta(){
    global $x;
    $x++;
    echo $x,"\n";
}
cuenta();   //1
cuenta();   //2
cuenta();   //3

Para destruir una variable se usa unset()

unset($a, $num, $fecha);

Es importante entender el ciclo de vida de las variables. Antes de ser declara la variable no existe y isset() dará falso.

if (isset($a)){
    echo 'Si';
}else{
    echo 'No';  //Respuesta
}
$a = 25;
if (isset($a)){
    echo 'Si';  //Respuesta
}else{
    echo 'No';
}

7. Funciones de variables

Existen funciones especificas para manipular variables. Para mas explicación ver aquí

Funciones de variables
FunciónDescripción
isset()Da verdadero si variable existe y no es nula.
unset()Destruye una variable.
empty()Consulta si una variable esta vacía.
is_null()Comprueba si una variable es NULL.
is_array()Comprueba si una variable es una matriz.
is_resource()Comprueba si una variable es un recurso.
is_object()Comprueba si una variable es un objeto.
is_callable()Comprueba que los contenidos de una variable puedan ser llamados como una función.
var_dump()Muestra información sobre una variable.
var_export()Devuelve una representación string de una variable analizable.
serialize()Genera una representación apta para el almacenamiento de un valor.
unserialize()Crea un valor PHP a partir de una representación almacenada.
SetType()Establece el tipo de una variable.
GetType()Obtener el tipo de una variable.
pack()Empaqueta información a una cadena binaria.
unpack()Desempaqueta datos de una cadena binaria.
Funciones para tipo
FunciónDescripción
gettype()Retorna el tipo de dato: entero, flotante, cadena, matriz, objeto o desconocido.
is_numeric()Retorna TRUE si arg es numérico
is_int()entero
is_integer()
is_long()flotante
is_double()
is_float()
is_real()
is_bool()boleano
is_null()nulo
is_string()cadena
is_binary()cadena binaria
is_buffer()cadena binaria
is_unicode()cadena unicode
is_array()matriz
is_object()objeto
is_resource()recurso
is_scalar()variable escalar
Funciones de conversión
FunciónDescripción
ord()entero a cadena
ceil()flotante a entero
floor()
round()
chr()cadena a entero
explode()Cadena a matriz
implode()matriz a cadena
$var[0] = 'Mi';
$var[1] = 'pequeño';
$var[2] = 'mundo.';
$res = implode(' ',$var);
echo $res;                // My pequeño mundo
$matriz = explode(' ',$res);

8. Recolector de basura

Desde PHP 5.3 se implemento un nuevo mecanismo llamado "recolector de basura" (Garbage Collection - GC). Siempre hemos pensado que al acabar un script ya se reciclaron todas las variables y esto es cierto, ya no se puede acceder a ninguna de las variables, pero en la memoria del servidor queda un pequeño espacio inutilizado, llamado fuga de memoria (Leake memory)

gc_collect_cycles()