Variables
- No es necesario declararlas previamente.
- Comienzan por
$, por ejemplo$nombre. Tras el$, el siguiente caracter debe ser una letra en minúscula (recomendación) o guión bajo_. Luego ya se pueden poner números. - Son case sensitive (sensibles a mayúsculas y minúsculas):
$var != $vAR - No se declara su tipo, el tipado es dinámico. Se asigna en tiempo de ejecución dependiendo del valor asignado.
- Conveniente inicializarlas, sino dan error.
<?php
$nombre = "Aitor";
$nombreCompleto = "Aitor Medrano";
$numero = 123;
$numero2 = 456;
$pi = 3.14;
$suerte = true;
$sinValor;
echo $sinValor;
?>
Tipos de datos
Aunque a priori no hay tipos de datos, internamente PHP trabaja con múltiples tipos de datos.
Tipos built-in:
boolintfloatstringarrayobjectresourcenevervoid- Tipos relativos a clases:
self,parent,static - Tipos Singleton:
false,true nullcallable
Tipos definidos por el usuario:
InterfaceClassEnumeration
Alias de tipos:
mixediterable
Tipado
En PHP se suele decir que el tipado es dinámico, débil y gradual. Cada adjetivo tiene un matiz distinto:
Dinámico
Los tipos de las variables no se definen al declararlas, sino que se determinan en tiempo de ejecución según el valor asignado. Una misma variable puede cambiar de tipo durante la ejecución del programa.
$x = 10; // $x es int
$x = "hola"; // ahora $x es string
Débil
PHP realiza conversión implícita de tipos (type juggling) cuando se necesita. Por ejemplo, en operaciones aritméticas o comparaciones, intentará forzar el valor a un tipo compatible en lugar de lanzar un error. Esto puede llevar a resultados inesperados si no se controla.
echo "5" + 2; // 7, convierte el string a número
var_dump("5" == 5); // true (comparación flexible con conversión implícita)
Gradual
Desde PHP 7 se introdujeron type hints y declaraciones de tipos (para parámetros, retornos y propiedades). Estos permiten fortalecer el tipado de manera opcional en partes del código. Se puede mezclar código sin tipos estrictos con secciones tipadas, y activar declare(strict_types=1) para un control más estricto.
declare(strict_types=1);
function suma(int $a, int $b): int {
return $a + $b;
}
echo suma(2, 3); // OK
echo suma("2", "3"); // Fatal error en modo estricto