Classes e Objetos
PHP Manual

Constantes do Objeto

É possível definir valores constantes em cada classe permanecendo a mesma e imutável. Constantes diferem de variáveis normais, ao não usar o símbolo $ para declará-las ou usá-las. A visibilidade padrão de constantes de classe é public.

O valor deve ser uma expressão constante, não podendo ser (por exemplo) uma variável, uma propriedade, ou uma chamada a uma função.

Também é possível que interfaces tenham constantes. Veja na documentação de interface os exemplos.

A partir do 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).

Constantes de classe são alocadas por classe, e não em cada instância da classe.

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;
    
// A partir do 5.3.0
    
const BAZ = <<<EOT
baz
EOT;
}
?>

Nota:

O suporte para inicialização de constantes com Heredoc e Nowdoc foi adicionado no PHP 5.3.0.

Exemplo #3 Exemplo de expressão constante

<?php
const ONE 1;

class 
foo {
    
// A partir do 5.6.0
    
const TWO ONE 2;
    const 
THREE ONE self::TWO;
    const 
SENTENCE 'O valor de THREE é '.self::THREE;
}
?>

É possível fornecer uma expressão escalar envolvendo strings e numéricos literais e/ou constantes no contexto de uma constante de classe.

Nota:

Expressões constantes foram adicionados no PHP 5.6.0.

Exemplo #4 Modificadores de visibilidade em contantes de classe

<?php
class Foo {
    
// As of PHP 7.1.0
    
public const BAR 'bar';
    private const 
BAZ 'baz';
}
echo 
Foo::BARPHP_EOL;
echo 
Foo::BAZPHP_EOL;
?>

O exemplo acima irá imprimir no PHP 7.1:

bar

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

Nota:

Modificadores de visibilidade estão disponíveis desde o PHP 7.1.0.


Classes e Objetos
PHP Manual