É possível definir valores constantes em cada classe permanecendo a mesma e imutável. Constantes diferem de variáveis normais no não uso do símbolo $ para declará-las ou usá-las.
O valor deve ser uma expressão constante, não podendo ser (por exemplo) uma variável, um membro de uma classe, o resultado de uma operação matemática, ou uma chamada de função.
É possível também interfaces terem constantes. Veja na documentação de interface os exemplos.
No PHP 5.3.0, é possível referenciar a classe usando uma variável. O valor da variável não pode ser uma palavra chave (e.g. self, parent e static).
Exemplo #1 Definindo e usando uma constante
<?php
class MinhaClasse
{
const constante = 'valor constante';
function mostrarConstante() {
echo self::constante . "\n";
}
}
echo MinhaClasse::constante . "\n";
$classname = "MinhaClasse";
echo $classname::constante; // A partir do PHP 5.3.0
$classe = new MinhaClasse();
$classe->mostrarConstante();
echo $classe::constante; // A partir do PHP 5.3.0
?>
Exemplo #2 Exemplo com informação estática
<?php
class foo {
// A partir do PHP 5.3.0
const bar = <<<'EOT'
bar
EOT;
}
?>
Diferente de heredocs, nowdocs pode ser usado no contexto de dado estático.
Nota:
Suporte a nowdoc foi adicionado no PHP 5.3.0.