PHP

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ícate

Declaració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.

Para seguir leyendo hazte Plus

¿Ya eres Plus? Accede a la app

20 % DE DESCUENTO

Plan mensual

19.00 /mes

15.20 € /mes

Precio normal mensual: 19 €
58 % DE DESCUENTO

Plan anual

10.00 /mes

8.00 € /mes

Ahorras 132 € al año
Precio normal anual: 120 €
Aprende PHP GRATIS online

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

PHP

Introducción Y Entorno

Instalación Y Primer Programa De Php

PHP

Introducción Y Entorno

Tipos De Datos, Variables Y Constantes

PHP

Sintaxis

Operadores Y Expresiones

PHP

Sintaxis

Estructuras De Control

PHP

Sintaxis

Funciones Y Llamada De Funciones

PHP

Sintaxis

Cadenas De Texto Y Manipulación

PHP

Sintaxis

Manejo De Números

PHP

Sintaxis

Manejo De Fechas Y Tiempo

PHP

Sintaxis

Manejo De Arrays

PHP

Sintaxis

Introducción A La Poo En Php

PHP

Programación Orientada A Objetos

Clases Y Objetos

PHP

Programación Orientada A Objetos

Constructores Y Destructores

PHP

Programación Orientada A Objetos

Herencia

PHP

Programación Orientada A Objetos

Encapsulación

PHP

Programación Orientada A Objetos

Polimorfismo

PHP

Programación Orientada A Objetos

Interfaces

PHP

Programación Orientada A Objetos

Traits

PHP

Programación Orientada A Objetos

Namespaces

PHP

Programación Orientada A Objetos

Autoloading De Clases

PHP

Programación Orientada A Objetos

Manejo De Errores Y Excepciones

PHP

Programación Orientada A Objetos

Manejo De Archivos

PHP

Programación Orientada A Objetos

Patrones De Diseño

PHP

Programación Orientada A Objetos

Introducción A Los Formularios En Php

PHP

Formularios

Procesamiento De Datos De Formularios

PHP

Formularios

Manejo De Archivos En Formularios

PHP

Formularios

Redirecciones Y Retroalimentación Al Usuario

PHP

Formularios

Formularios Dinámicos Y Separación De Lógica

PHP

Formularios

Introducción A La Persistencia En Php

PHP

Persistencia

Conexión A Bases De Datos

PHP

Persistencia

Consultas Y Operaciones Crud

PHP

Persistencia

Gestión De Transacciones

PHP

Persistencia

Manejo De Errores Y Excepciones En Base De Datos

PHP

Persistencia

Patrones De Acceso A Datos

PHP

Persistencia

Concepto De Sesiones En Php

PHP

Sesiones Y Cookies

Configuración De Sesiones

PHP

Sesiones Y Cookies

Cookies

PHP

Sesiones Y Cookies

Manejo Avanzado De Sesiones Y Cookies

PHP

Sesiones Y Cookies

Principales Vulnerabilidades En Php

PHP

Seguridad

Seguridad En Formularios Y Entrada De Datos

PHP

Seguridad

Protección Frente A Inyección Sql

PHP

Seguridad

Gestión De Contraseñas Y Cifrado

PHP

Seguridad

Seguridad En Sesiones Y Cookies

PHP

Seguridad

Configuraciones De Php Para Seguridad

PHP

Seguridad

Introducción Al Testing En Php

PHP

Testing

Phpunit

PHP

Testing

Cobertura De Código En Testing

PHP

Testing

Test Doubles (Mocks, Stubs, Fakes, Spies)

PHP

Testing

Pruebas De Integración Y Funcionales

PHP

Testing

Accede GRATIS a PHP y certifícate

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.