Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
Se puede definir una constante usando la
función define() o con la
palabra reservada const
fuera de la definición de una clase
a partir PHP 5.3.0. Mientras que define() permite definir una
constante con una expresión arbitraria, la palabra reservada const
tiene
retricciones que se resumen en el siguiente párrafo.
Una vez que la constante está definida, no puede ser
cambiada o redifinida.
Antes de PHP 5.6, al emplear la palabra reservada const
,
solamente los datos escalares (boolean, integer,
float y string) pueder estar contenidos
en constante. Desde PHP 5.6 en adelante, es posible
definir una constante como una expresión escalar, y también es posible
definir un array constante. Es posible definir
constantes como un resource, pero debería evitarse, ya que podría
ocasionar resultados inesperados.
Para obtener el valor de una constante solo es necesario especificar su nombre.
A diferencia de las variables, no se debe prefijar una
constante con el signo $
.
También se puede usar la función constant() para leer el
valor de una constante si se desea obtener el valor de una constante de forma
dinámica.
Use get_defined_constants() para obtener una lista de todas
las constantes definidas.
Nota: Las contantes y las variables (globales) se encuentran en un espacio de nombres distinto. Esto implica que por ejemplo
true
y $TRUE son diferentes.
Si se usa una constante que todavía no está definida, PHP asume que se está refiriendo
al nombre de la constante en si, igual que si fuera
una string (CONSTANT vs "CONSTANT"). Cuando esto suceda,
se mostrará un error de nivel E_NOTICE.
Ver también la sección en el manual de porqué
$foo[bar] es incorrecto (a no ser que
primero define() bar
como constante). Esto no se aplica a las constantes (completamente) cualificadas,
lo cual emitirá un error fatal si no está definida. Si simplemente
quiere comprobar si una constante está definida, use la función defined().
Estas son las diferencias entre constantes y variables:
$
),
como prefijo.
const
, y, a partir
de PHP 7, las constantes de array también se pueden definir con define().
Se pueden utilizar arrays en expresiones escalares constantes
(por ejemplo, const FOO = array(1,2,3)[0];
),
aunque el resultado final debe ser un valor de un tipo permitido.
Ejemplo #1 Definición de constantes
<?php
define("CONSTANTE", "Hola mundo.");
echo CONSTANTE; // muestra "Hola mundo."
echo Constante; // muestra "Constant" y se emite un aviso.
?>
Ejemplo #2 Definición de constantes usando el la palabra reservada const
<?php
// Funciona a partir de PHP 5.3.0
const CONSTANTE = 'Hola Mundo';
echo CONSTANTE;
// Funciona a partir de PHP 5.6.0
const OTRA_CONSTANTE = CONSTANTE.'; Adiós Mundo';
echo OTRA_CONSTANTE;
const ANIMALES = array('perro', 'gato', 'pájaro');
echo ANIMALES[1]; // muestra "gato"
// Funciona a partir de PHP 7
define('ANIMALES', array(
'perro',
'gato',
'pájaro'
));
echo ANIMALES[1]; // muestra "gato"
?>
Nota:
A diferencia de definir constantes usando define(), las constantes definidas con la palabra clave
const
deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución. Esto significa que no pueden declararse dentro de funciones, bucles, sentenciasif
o bloquestry
/catch
.
Vea también Constantes de clase.
Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
Constants of constant :
<?php
const foo = hello;
const bar = foo;
const bd = bar;
echo "bd = " .bd; // Prints out: Hello
?>
const ArrayFromTextfile = file("mytextfile.txt", FILE_IGNORE_NEW_LINES);
does not work, it throws an error:
Fatal error: Constant expression contains invalid operations in php shell code on line …
Instead use:
define ("ArrayFromTextfile", file("mytextfile.txt", FILE_IGNORE_NEW_LINES));
print_r(ArrayFromTextfile);
Result:
Array
(
[0] ⇨ Line 1
[1] ⇨ Line 2
[2] ⇨ Line 3
[3] => …
)
With PHP 5.6, multi-dimensional arrays are also possible if you use "const" instead of "define". So,
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul')));
won't work with PHP 5.6, but
const QUARTLIST=array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
will.