Sintaxe

As constantes podem ser definidas usando a palavra-chave const ou usando a função define(). Enquanto define() permite que uma constante seja definida usando uma expressão arbitrária, a palavra-chave const possui restrições, conforme descrito no próximo parágrafo. Uma vez definida, a constante nunca poderá ser modificada ou anulada.

Ao usar a palavra-chave const, somente expressões escalares (bool, int, float e string) e arrays constantes contendo apenas expressões escalares são aceitos. É possível definir constantes como um resource, mas isso deve ser evitado, pois pode causar resultados inesperados.

O valor de uma costante é acessado simplesmente informando seu nome. Ao contrário das variáveis, uma constante não é precedida por um $. Também é possível usar a função constant() para ler o valor de uma constante se o nome da constante for obtido dinamicamente. Use get_defined_constants() para obter uma lista de todas as constantes definidas.

Nota: As constantes e variáveis (globais) estão em espaços de nomes diferentes. Isso implica que, por exemplo, true e $TRUE são geralmente diferentes.

Se uma constante indefinida for usada, um erro Error será lançado. Antes do PHP 8.0.0, constantes indefinidas eram interpretadas como uma simples string, ou seja, CONSTANTE vs. "CONSTANTE". Esse mecanismo alternativo foi descontinuado a partir do PHP 7.2.0 e um alerta de nível E_WARNING será lançado quando isso acontecer. Antes do PHP 7.2.0, um erro de nível E_NOTICE era lançado. Veja também por que $foo[bar] é errado (a não ser que bar seja uma constante). Isso não se aplica às constantes (totalmente) qualificadas, que sempre lançarão um Error se forem indefinidas.

Nota: Para verificar se uma constante está definida, use a função defined().

Estas são as diferenças entre constantes e variáveis:

  • Constantes não têm um cifrão ($) antes delas;
  • Constantes podem ser definidas e acessadas em qualquer lugar sem considerar as regras de escopo de variáveis;
  • Constantes não podem ser redefinidas ou anuladas depois de definidas; e
  • Constantes só podem ter valores escalares ou arrays.

Exemplo #1 Definindo Constantes

<?php
define
("CONSTANTE", "Olá Mundo.");
echo
CONSTANTE; // imprime "Olá Mundo."
echo Constante; // Lança um erro Error: Undefined constant "Constante"

Exemplo #2 Definindo Constantes usando a palavra-chave const

<?php
// Valor escalar simples
const CONSTANTE = 'Olá Mundo';

echo
CONSTANTE;

// Expressão escalar
const OUTRA_CONSTANTE = CONSTANTE . '; Adeus Mundo';
echo
OUTRA_CONSTANTE;

const
ANIMAIS = array('cachorro', 'gato', 'pássaro');
echo
ANIMAIS[1]; // imprime "gato"

// Array constante
define('ANIMAIS', array(
'cachorro',
'gato',
'pássaro'
));
echo
ANIMAIS[1]; // imprime "gato"
?>

Nota:

Ao contrário das constantes definidas usando define(), as constantes definidas usando a palavra-chave const devem ser declaradas no escopo mais externo porque são definidas em tempo de compilação. Isto significa que constantes não podem ser declaradas dentro de funções, loops, declarações if ou blocos try/catch.

To Top