Es posible definir valores constantes en función de cada clase manteniéndola invariable. Las constantes se diferencian de variables comunes en que no utilizan el símbolo $ al declararlas o usarlas.
El valor debe ser una expresión constante, no (por ejemplo) una variable, una propiedad, un resultado de una operación matemática, o una llamada a una función.
También es posible para las interfaces tener constantes. Ver la documentación de interfaces para ejemplos.
A partir de PHP 5.3.0, es posible hacer referencia a una clase utilizando una variable. El valor de la variable no puede ser una palabra clave (por ej., self, parent y static).
Ejemplo #1 Definición y uso de una constante
<?php
class MyClass
{
const CONSTANT = 'valor constante';
function showConstant() {
echo self::CONSTANT . "\n";
}
}
echo MyClass::CONSTANT . "\n";
$classname = "MyClass";
echo $classname::CONSTANT . "\n"; // A partir de PHP 5.3.0
$class = new MyClass();
$class->showConstant();
echo $class::CONSTANT."\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 diferencia de heredocs, nowdocs puede ser utilizado en cualquier contexto de datos estáticos.
Nota:
El soporte nowdoc fue agregado en PHP 5.3.0.