Clases y objetos
PHP Manual

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.

Ejemplo #3 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 #4 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::BARPHP_EOL;
echo 
Foo::BAZPHP_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.


Clases y objetos
PHP Manual