Constantes de clases

Es posible definir valores constantes en función de cada clase manteniéndola invariable. Las constantes se diferencian de las variables comunes en que no utilizan el símbolo $ al declararlas o emplearlas. La visibilidad predeterminada de las constantes de clase es public.

El valor debe ser una expresión constante, no (por ejemplo) una variable, una propiedad o una llamada a una función.

También es posible que las interfaces tengan constantes. Consulte los ejemplos de la documentación de interfaces.

A partir de PHP 5.3.0, es posible referirse a una clase utilizando una variable. El valor de la variable no puede ser una palabra reservada (p.ej., self, parent o static).

Observe que las constantes de clase están asignadas una vez por clase, y no por cada instancia de la clase.

Ejemplo #1 Definición y uso de una constante

<?php
class MiClase
{
const
CONSTANTE = 'valor constante';

function
mostrarConstante() {
echo
self::CONSTANTE . "\n";
}
}

echo
MiClase::CONSTANTE . "\n";

$nombreclase = "MiClase";
echo
$nombreclase::CONSTANTE . "\n"; // A partir de PHP 5.3.0

$clase = new MiClase();
$clase->mostrarConstante();

echo
$clase::CONSTANTE."\n"; // A partir de PHP 5.3.0
?>

Ejemplo #2 Ejemplo de datos estáticos

<?php
class foo {
// A partir de PHP 5.3.0
const BAR = <<<'EOT'
bar
EOT;
// A partir de PHP 5.3.0
const BAZ = <<<EOT
baz
EOT;
}
?>

Nota:

El soporte para la inicialización de constantes con la sintaxis de Heredoc y Nowdoc fue agregado en PHP 5.3.0.

La constante especial ::class está disponible a partir de PHP 5.5.0, y permite la resolución de nombres de clase completamente cualificados en la compilación. Esto es útil para clases en espacios de nombres:

Ejemplo #3 Ejemplo de ::class en espacio de nombres

<?php
namespace foo {
class
bar {
}

echo
bar::class; // foo\bar
}
?>

Ejemplo #4 Ejemplo de expresión constante

<?php
const UNO = 1;

class
foo {
// A partir de PHP 5.6.0
const DOS = UNO * 2;
const
TRES = UNO + self::DOS;
const
SENTENCIA = 'El valor de TRES es '.self::TRES;
}
?>

Es posible proporcionar una expresión escalar que implique literales numéricos y de string y/o constantes en el contexto de una constante de clase.

Nota:

El soporte para expresiones constantes se añadió en PHP 5.6.0.

Ejemplo #5 Modificadores de visibilidad de constantes de clase

<?php
class Foo {
// A partir de PHP 7.1.0
public const BAR = 'bar';
private const
BAZ = 'baz';
}
echo
Foo::BAR, PHP_EOL;
echo
Foo::BAZ, PHP_EOL;
?>

Salida del ejemplo anterior en PHP 7.1:

 bar Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in … 

Nota:

A partir de PHP 7.1.0, están permitidos los modificadores de visibilidad para constantes de clase.

To Top