PHP
Tutorial PHP: Tipos de datos, variables y constantes
PHP: Aprende a manejar la declaración y asignación de variables, esenciales para tus scripts.
Aprende PHP GRATIS y certifícateDeclaración y asignación de variables
En PHP, las variables son fundamentales para almacenar y manipular información en un script. Una variable se declara precediendo su nombre con el signo de dólar ($), seguido de una secuencia que puede incluir letras, números y guiones bajos, pero debe comenzar con una letra o guión bajo.
Para asignar un valor a una variable, se utiliza el operador de asignación (=). Por ejemplo, para almacenar el número 10 en una variable llamada $numero
, se escribe:
$numero = 10;
Es importante tener en cuenta que los nombres de las variables en PHP son sensibles a mayúsculas y minúsculas. Esto significa que $Variable
y $variable
son variables diferentes. Esta distinción ayuda a evitar confusiones y errores en el código.
Al asignar valores a variables, se puede utilizar cualquier tipo de dato: números, cadenas de texto, arrays u objetos. Por ejemplo, para asignar una cadena de texto a una variable $mensaje
, se puede hacer lo siguiente:
$mensaje = "Bienvenido a PHP";
No es necesario declarar una variable explícitamente en PHP. Al asignarle un valor, la variable se crea automáticamente y está lista para ser utilizada en el script.
Para asignar el resultado de una expresión o función a una variable, simplemente se utiliza el operador de asignación. Por ejemplo, para almacenar la suma de dos números:
$suma = $numero + 5;
También es posible asignar valores a múltiples variables en una sola línea utilizando la asignación múltiple. Por ejemplo:
$a = $b = $c = 0;
Los nombres de variables pueden contener letras, números y guiones bajos, pero deben seguir ciertas reglas de nomenclatura:
- Deben comenzar con una letra o guión bajo (_).
- No pueden comenzar con un número.
- Solo pueden contener caracteres alfanuméricos y guiones bajos.
- No deben contener espacios ni caracteres especiales.
Es recomendable utilizar nombres de variables que sean descriptivos y reflejen su propósito dentro del código. Esto mejora la legibilidad y facilita el mantenimiento del script.
En PHP, es posible utilizar variables variables, donde el nombre de una variable es almacenado en otra variable. Aunque es una característica poderosa, debe usarse con precaución para evitar código complejo y difícil de mantener.
$nombreVariable = "mensaje";
$$nombreVariable = "Hola, mundo";
echo $mensaje; // Imprime "Hola, mundo"
Tipos de datos
En PHP, los tipos de datos determinan la naturaleza de la información que una variable puede almacenar y cómo se puede manipular. Aunque PHP es un lenguaje de tipado dinámico y no requiere declarar explícitamente el tipo de una variable, entender los distintos tipos es esencial para escribir código robusto y eficiente.
Los tipos escalares representan valores simples y directos:
Enteros (int): números enteros positivos o negativos sin decimales, como $edad = 30;
o $saldo = -100;
.
Flotantes (float): números con punto decimal, también conocidos como de punto flotante, por ejemplo, $precio = 19.99;
o $pi = 3.1416;
.
Cadenas (string): secuencias de caracteres que representan texto, como $nombre = "Ana";
o $mensaje = 'Bienvenido';
. Las cadenas pueden definirse con comillas simples o dobles, siendo estas últimas las que permiten interpolación de variables y caracteres especiales.
Booleanos (bool): valores lógicos que pueden ser true o false, utilizados en estructuras de control y comparaciones lógicas, por ejemplo, $esVisible = true;
.
Los tipos compuestos permiten almacenar múltiples valores o estructuras más complejas:
Arrays: colecciones ordenadas de valores que pueden accederse mediante índices o claves asociativas. Un array simple puede definirse como $frutas = ['manzana', 'naranja', 'plátano'];
, mientras que un array asociativo sería $usuario = ['nombre' => 'Luis', 'email' => 'luis@example.com'];
.
Objetos (object): instancias de clases que encapsulan propiedades y métodos, permitiendo la programación orientada a objetos. Por ejemplo:
class Coche {
public $marca;
public $modelo;
}
$miCoche = new Coche();
$miCoche->marca = 'Toyota';
$miCoche->modelo = 'Corolla';
Los tipos especiales incluyen:
NULL: representa una variable sin valor asignado. Se utiliza para indicar la ausencia de valor, como $variable = NULL;
. Una variable es null si se le ha asignado NULL, si no se le ha asignado ningún valor o si ha sido eliminada con unset()
.
Resource: se refiere a recursos externos, como conexiones a bases de datos o manejadores de archivos. Por ejemplo, al abrir un archivo con $fichero = fopen('datos.txt', 'r');
, se obtiene una variable de tipo resource.
Además, PHP cuenta con varios pseudo-tipos útiles:
- Callable: representa cualquier cosa que pueda ser llamada como una función, incluyendo funciones anónimas, métodos estáticos o arrays que indican una clase y un método. Por ejemplo:
function sumar($a, $b) {
return $a + $b;
}
$operacion = 'sumar';
echo $operacion(5, 3); // Imprime 8
Iterable: desde PHP 7.1, representa cualquier valor que pueda ser recorrido con un bucle foreach, como arrays u objetos que implementen la interfaz Traversable.
Mixed: introducido en PHP 8.0, indica que una variable puede ser de cualquier tipo. Es útil en funciones que pueden retornar diferentes tipos de datos.
PHP 8 también ha incorporado los Union Types, que permiten declarar que una variable o parámetro puede ser de varios tipos específicos. Por ejemplo:
function procesarDatos(int|float $numero) {
// Código que maneja tanto enteros como flotantes
}
Es posible utilizar el operador ? para indicar que una variable puede ser de un tipo determinado o null, como en ?string
, lo que significa que la variable puede ser una cadena o null.
Aunque PHP realiza conversión de tipos automática en muchas operaciones, es recomendable ser explícito cuando sea necesario. Para convertir una variable a un tipo específico, se puede usar el casting, por ejemplo:
$valor = "10";
$numero = (int)$valor; // Convierte la cadena "10" en el entero 10
Para verificar el tipo de una variable, existen funciones como is_int(), is_string(), is_array(), is_object(), y is_null(). Utilizar estas funciones ayuda a asegurar que el código opere sobre el tipo de dato esperado y a prevenir errores en tiempo de ejecución.
Los arrays en PHP son muy flexibles y pueden contener elementos de distintos tipos, incluso otros arrays u objetos. Se pueden manipular utilizando una amplia variedad de funciones integradas como array_push(), array_merge(), count(), y muchas más.
Las cadenas ofrecen una gran cantidad de operaciones, como concatenación usando el operador ., búsqueda de subcadenas con strpos(), o reemplazo de texto con str_replace(). Por ejemplo:
$texto = "Hola";
$texto .= " Mundo"; // Ahora $texto es "Hola Mundo"
Es importante manejar los tipos de datos con cuidado al realizar comparaciones y operaciones aritméticas para evitar resultados inesperados. Por ejemplo, comparar un entero y una cadena puede producir resultados diferentes si no se tiene en cuenta el tipo de datos de cada variable.
Comprender y utilizar correctamente los tipos de datos en PHP es esencial para el desarrollo de aplicaciones sólidas y garantiza que el código sea más legible y mantenible.
Scope de las variables
En PHP, el scope (ámbito) de las variables determina en qué partes del código una variable está accesible. Comprender el scope es esencial para escribir código limpio y evitar errores relacionados con variables no definidas o conflictos de nombres.
Las variables declaradas fuera de funciones o clases tienen scope global. Esto significa que son accesibles desde cualquier parte del script excepto dentro de funciones o métodos. Por ejemplo:
<?php
$mensaje = "Hola desde el scope global";
function mostrarMensaje() {
echo $mensaje; // Esto generará un error: variable indefinida
}
mostrarMensaje();
En el ejemplo anterior, intentar acceder a $mensaje
dentro de la función produce un error porque $mensaje
no está disponible en el scope local de la función. Para acceder a una variable global dentro de una función, se puede utilizar la palabra clave global:
<?php
$mensaje = "Hola desde el scope global";
function mostrarMensaje() {
global $mensaje;
echo $mensaje; // Ahora sí imprime "Hola desde el scope global"
}
mostrarMensaje();
Al declarar global $mensaje;
, estamos importando la variable global $mensaje
al scope local de la función. Otra forma de acceder a variables globales es utilizando el array superglobal $GLOBALS:
<?php
$mensaje = "Hola desde el scope global";
function mostrarMensaje() {
echo $GLOBALS['mensaje']; // Imprime "Hola desde el scope global"
}
mostrarMensaje();
El array $GLOBALS es un array asociativo que contiene una referencia a todas las variables definidas en el scope global, accesibles desde cualquier parte del script.
Las variables declaradas dentro de una función tienen scope local y no son accesibles desde fuera de ella. Por ejemplo:
<?php
function definirVariable() {
$numero = 10;
}
definirVariable();
echo $numero; // Genera un error: variable indefinida
En este caso, $numero
solo existe dentro de la función definirVariable()
. Intentar acceder a $numero
fuera de esa función resultará en un error porque la variable no existe en el scope global.
Las variables estáticas permiten mantener el valor de una variable local entre múltiples llamadas a una función. Se declaran utilizando la palabra clave static:
<?php
function contador() {
static $cuenta = 0;
$cuenta++;
echo "La función se ha ejecutado {$cuenta} veces. ";
}
contador(); // Imprime "La función se ha ejecutado 1 veces. "
contador(); // Imprime "La función se ha ejecutado 2 veces. "
contador(); // Imprime "La función se ha ejecutado 3 veces. "
Al usar static, la variable $cuenta
conserva su valor entre llamadas, actuando como una variable persistente en el scope de la función.
En el contexto de clases, las variables se conocen como propiedades y su scope está determinado por los modificadores de acceso public, protected y private. Por ejemplo:
<?php
class Persona {
private $nombre;
public function setNombre($nombre) {
$this->nombre = $nombre;
}
public function getNombre() {
return $this->nombre;
}
}
$persona = new Persona();
$persona->setNombre("Carlos");
echo $persona->getNombre(); // Imprime "Carlos"
En este ejemplo, la propiedad $nombre
tiene scope privado, por lo que solo es accesible desde dentro de la clase Persona. Se utilizan métodos públicos para asignar y obtener su valor.
Las funciones anónimas o closures pueden acceder a variables del scope superior utilizando la palabra clave use. Esto es especialmente útil al trabajar con funciones de retorno o callbacks:
<?php
$factor = 2;
$duplicar = function($num) use ($factor) {
return $num * $factor;
};
echo $duplicar(5); // Imprime "10"
Aquí, la función anónima utiliza use ($factor) para importar la variable $factor
del scope global al scope de la función. Sin use, la función no tendría acceso a $factor
y no podría realizar la multiplicación.
Es importante tener en cuenta que, al usar use, las variables se pasan por valor de forma predeterminada. Si se desea pasar la variable por referencia, para reflejar cambios en el scope exterior, se debe anteponer & a la variable:
<?php
$contador = 0;
$incrementar = function() use (&$contador) {
$contador++;
};
$incrementar();
$incrementar();
echo $contador; // Imprime "2"
En este caso, el valor de $contador
en el scope global se incrementa desde dentro de la función anónima gracias al uso de & en use (&$contador).
Comprender el scope de las variables en PHP es esencial para controlar el flujo de datos y evitar conflictos entre variables. Esto permite escribir código más limpio, mantenible y libre de errores relacionados con variables fuera de alcance o sobreescritas inadvertidamente.
Uso de constantes
En PHP, las constantes son identificadores para valores que no cambian durante la ejecución del script. A diferencia de las variables, las constantes se definen una sola vez y su valor permanece invariable. Esto es útil para almacenar datos que se utilizan repetidamente y que deben permanecer inmutables, como configuraciones o valores fijos.
Para definir una constante, se puede utilizar la función define()
o la palabra clave const
. La función define()
permite crear constantes en tiempo de ejecución:
define('PI', 3.1416);
define('NOMBRE_SITIO', 'MiAplicacion');
En este ejemplo, PI
y NOMBRE_SITIO
son constantes que pueden ser utilizadas en cualquier parte del script sin necesidad de llevar el símbolo $. Las convenciones dictan que los nombres de constantes se escriban en mayúsculas y, si es necesario, se separen las palabras con guiones bajos para mejorar la legibilidad.
Alternativamente, la palabra clave const
se utiliza para definir constantes en tiempo de compilación y es especialmente útil dentro de clases:
const VERSION = '1.0.0';
const DOMINIO = 'https://www.ejemplo.com';
Es importante destacar que al utilizar const
fuera de una clase, debe hacerse en el ámbito global. Sin embargo, dentro de una clase, las constantes se convierten en propiedades estáticas y se accede a ellas utilizando el operador de resolución de ámbito ::
:
class Configuracion {
const API_KEY = '123ABC';
const TIMEOUT = 30;
}
echo Configuracion::API_KEY;
Las constantes tienen las siguientes características:
- Inmutabilidad: una vez definida, su valor no puede ser modificado ni redefinido.
- Ámbito global: están disponibles en todo el script sin importar dónde se hayan definido.
- Tipado escalar: pueden contener valores de tipo int, float, string o boolean.
Además de las constantes definidas por el usuario, PHP ofrece una serie de constantes mágicas que proporcionan información sobre el entorno de ejecución:
__LINE__
: número de línea actual en el archivo.__FILE__
: ruta completa y nombre del archivo.__DIR__
: directorio del archivo.__FUNCTION__
: nombre de la función actual.__CLASS__
: nombre de la clase actual.__METHOD__
: nombre del método de clase actual.__NAMESPACE__
: nombre del espacio de nombres actual.
Estas constantes son especialmente útiles para propósitos de depuración o para crear código dinámico que se adapta según su ubicación o contexto.
A partir de PHP 7, es posible definir constantes de tipo array utilizando define()
:
define('FRUTAS', ['manzana', 'naranja', 'plátano']);
echo FRUTAS[1]; // Imprime 'naranja'
Sin embargo, al usar const
, las constantes solo pueden ser de tipo escalar. Intentar asignar un array a una constante con const
generará un error.
Para verificar si una constante está definida antes de usarla, se puede utilizar la función defined()
:
if (defined('VERSION')) {
echo 'La versión es ' . VERSION;
}
Esto es útil para evitar errores en caso de que una constante no esté disponible en ciertos entornos o configuraciones.
En cuanto a las buenas prácticas, se recomienda:
- Nomenclatura consistente: utilizar nombres descriptivos y en mayúsculas para las constantes.
- Evitar conflictos: asegurarse de que los nombres de las constantes sean únicos para prevenir colisiones con otras partes del código o con constantes internas de PHP.
- Uso adecuado del ámbito: definir las constantes en el ámbito que corresponda según su uso previsto, ya sea global o dentro de una clase.
Las constantes son especialmente útiles para definir valores de configuración que no deben cambiar durante la ejecución. Por ejemplo, para establecer un nivel de acceso o permisos:
define('ROL_ADMIN', 'administrador');
define('ROL_EDITOR', 'editor');
define('ROL_USUARIO', 'usuario');
Al utilizar estas constantes en lugar de valores literales, se mejora la mantenibilidad y se reduce el riesgo de errores tipográficos.
Finalmente, es importante recordar que las constantes no pueden ser modificadas ni eliminadas una vez definidas. Intentar cambiar su valor resultará en un error. Por lo tanto, deben utilizarse cuando se requiera un valor fijo y constante a lo largo de todo el script.
Todas las lecciones de PHP
Accede a todas las lecciones de PHP y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Php
Introducción Y Entorno
Instalación Y Primer Programa De Php
Introducción Y Entorno
Tipos De Datos, Variables Y Constantes
Sintaxis
Operadores Y Expresiones
Sintaxis
Estructuras De Control
Sintaxis
Funciones Y Llamada De Funciones
Sintaxis
Cadenas De Texto Y Manipulación
Sintaxis
Manejo De Números
Sintaxis
Manejo De Fechas Y Tiempo
Sintaxis
Manejo De Arrays
Sintaxis
Introducción A La Poo En Php
Programación Orientada A Objetos
Clases Y Objetos
Programación Orientada A Objetos
Constructores Y Destructores
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Traits
Programación Orientada A Objetos
Namespaces
Programación Orientada A Objetos
Autoloading De Clases
Programación Orientada A Objetos
Manejo De Errores Y Excepciones
Programación Orientada A Objetos
Manejo De Archivos
Programación Orientada A Objetos
Patrones De Diseño
Programación Orientada A Objetos
Introducción A Los Formularios En Php
Formularios
Procesamiento De Datos De Formularios
Formularios
Manejo De Archivos En Formularios
Formularios
Redirecciones Y Retroalimentación Al Usuario
Formularios
Formularios Dinámicos Y Separación De Lógica
Formularios
Introducción A La Persistencia En Php
Persistencia
Conexión A Bases De Datos
Persistencia
Consultas Y Operaciones Crud
Persistencia
Gestión De Transacciones
Persistencia
Manejo De Errores Y Excepciones En Base De Datos
Persistencia
Patrones De Acceso A Datos
Persistencia
Concepto De Sesiones En Php
Sesiones Y Cookies
Configuración De Sesiones
Sesiones Y Cookies
Cookies
Sesiones Y Cookies
Manejo Avanzado De Sesiones Y Cookies
Sesiones Y Cookies
Principales Vulnerabilidades En Php
Seguridad
Seguridad En Formularios Y Entrada De Datos
Seguridad
Protección Frente A Inyección Sql
Seguridad
Gestión De Contraseñas Y Cifrado
Seguridad
Seguridad En Sesiones Y Cookies
Seguridad
Configuraciones De Php Para Seguridad
Seguridad
Introducción Al Testing En Php
Testing
Phpunit
Testing
Cobertura De Código En Testing
Testing
Test Doubles (Mocks, Stubs, Fakes, Spies)
Testing
Pruebas De Integración Y Funcionales
Testing
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender la sintaxis para declarar variables en PHP.
- Aplicar el operador de asignación para inicializar variables.
- Distinguir entre variables sensibles a mayúsculas y minúsculas.
- Utilizar diferentes tipos de datos en PHP, como enteros, flotantes, cadenas, booleanos, arrays y objetos.
- Conocer el concepto de variables variables y cómo aplicarlas.
- Reconocer las reglas de nomenclatura para variables.
- Manejar el scope de las variables y el acceso a variables globales dentro de funciones.