¿Qué es una constante PHP?

Hola amig@s, ¿qué tal la semana? Allá va el último video del curso PHP guay.



Una constante no es más que un valor que no varía durante la ejecución de un programa, si dicho valor fuera a variar ya no sería una constante, sino una variable.

Como veis tenemos ejercicios, os invito a descargarlos de este repo de GitHub y a ejecutarlos en vuestro PHP CLI para seguir bien el hilo de esta explicación.

También adjunto los ejercicios en esta entrada porque así te resultará cómodo ver el video aquí en este post y ver el código de las constantes PHP, las dos cosas a la vez.

Pongo los 3 primeros ejercicios, no pongo el archivo de configuración predeterminado de WordPress wp-config-sample.php, este lo tendrás que ver en GitHub.

Archivo constants-01.php:

#!/bin/php
<?php
/*
* En este ejercicio vamos a aprender: 
*
* 1. Cómo poner un nombre a una constante
* 2. Qué tipo de dato pueden almacenar las constantes
*
* 1. Cómo poner un nombre a una constante
* ---------------------------------------
* Para poner un nombre a una constante debemos seguir la regla que
* determina esta expresión regular ^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$
*
* Esto lo explicamos en el video de PHP guay titulado Etiquetas o identificadores PHP:
*
* https://www.youtube.com/watch?v=Hj_E0Wk2lNE 
*
* La regla es sencilla: los nombres tienen que empezar por una letra o por un 
* guión bajo, y luego pueden ir seguidos por cualquier número de letras, números 
* o guiones bajos.
*
* 2. Qué tipo de dato puede almacena una constante
* ------------------------------------------------
* Las constantes pueden almacenar datos escalares: boolean, integer, float y string. 
* A partir de PHP 5.6 las constantes también pueden almacenar arrays. 
*/

// De acuerdo a lo anterior, algunos nombres de constantes válidos son:

define('Debug', true);
define('age', 18);
define('Amount', 75.25);
define('CuRrEnCy', 'USD');

echo 'El modo debug es: ' . Debug . PHP_EOL;
echo 'La edad predeterminada es: ' . age . PHP_EOL;
echo 'El importe base es: ' . Amount . PHP_EOL;
echo 'La divisa predeterminada es : ' . CuRrEnCy . PHP_EOL; 
echo '-------------------------------------------------------------------' . PHP_EOL;

/*
* Sin embargo, por convención, los nombres de las constantes se escriben en mayúscula.
* Por tanto, en vez de utilizar nombres como los anteriores, deberíamos usar nombres como 
* estos:
*/

define('DEBUG', true);
define('AGE', 18);
define('AMOUNT', 75.25);
define('CURRENCY_01', 'USD');
define('CURRENCY_02', 'EUR');

echo 'El modo debug es: ' . DEBUG . PHP_EOL;
echo 'La edad predeterminada es: ' . AGE . PHP_EOL;
echo 'El importe base es: ' . AMOUNT . PHP_EOL;
echo 'La divisa predeterminada es : ' . CURRENCY_02 . PHP_EOL; 

Archivo constants-02.php:

#!/bin/php
<?php
/*
* En este ejercicio vamos a aprender: 
*
* 1. Otra forma de definir las constantes a partir de PHP 5.3.
* ------------------------------------------------------------
* En el ejercicio anterior hemos definido las constantes con define, 
* pero a partir de PHP 5.3. también se pueden definir con la palabra 
* reservada const, esto es, con la misma sintaxis que se utiliza para 
* crear constantes de clase.
*/

const DEBUG = true;
const AGE = 18;
const AMOUNT = 75.25;
const CURRENCY_01 = 'USD';
const CURRENCY_02 = 'EUR';

echo 'El modo debug es: ' . DEBUG . PHP_EOL;
echo 'La edad predeterminada es: ' . AGE . PHP_EOL;
echo 'El importe base es: ' . AMOUNT . PHP_EOL;
echo 'La divisa predeterminada es : ' . CURRENCY_02 . PHP_EOL; 
echo '----------------------------------------------------------' . PHP_EOL;

/*
* Sin embargo, no es exactamente lo mismo declarar una constante con define
* que declararla con const.
*
* Por ejemplo, con define podemos definir constantes dentro de bucles, 
* sentencias condicionales y funciones, pero esto no lo podemos hacer con 
* const.
*
* Además, con define podemos utilizar expresiones en el momento de declarar
* las constantes, mientras que con const no podemos hacerlo.
*/

define('A', 7*6);
define('B', 'Hola ' . 'que tal');
define('C', __FILE__);

echo A . PHP_EOL;
echo B . PHP_EOL;
echo C . PHP_EOL;

Archivo constants-03.php:

#!/bin/php
<?php
/*
* En este ejercicio vamos a aprender:
*
* 1. Las consantes no se pueden redefinir
* ---------------------------------------
*/
define('CURRENCY_01', 'USD');
define('CURRENCY_01', 'USD');

Si tienes alguna duda sobre lo que explicamos aquí te invito a compartir esta entrada y vemos qué sucede. ¡Un saludo!