Você pode definir uma constante utilizando a função define(), ou a palavra-chave const fora da definição de uma classe a partir do PHP 5.3.0. Uma vez definida, a constante não poderá ser modificada ou anulada.
Até o PHP 5.6, somente dados escalares (boolean, integer, float e string) podem ser colocados em constantes. A partir do PHP 5.6, é possível também utilizar um array como valor de constantes. É permitido o uso de um resource (recurso) como valor de constante, mas deve ser evitado já que pode causar resultados não esperados.
Você pode obter o valor de uma constante simplesmente especificando seu nome. Diferentemente de variáveis, você não prefixa uma constante com um sinal de $. Você também pode utilizar a função constant() para ler o valor de uma constante, se você precisar obter seu valor dinamicamente. Utilize get_defined_constants() para obter a lista de todas as constantes definidas.
Nota: As constantes e variáveis (globais) estão em espaços de nomes diferentes. Isto implica, por exemplo, que
TRUE
e $TRUE são geralmente diferentes.
Se você usar uma constante indefinida, o PHP assume o nome da constante como seu próprio valor, como se você tivesse uma string (CONSTANT vs "CONSTANT"). Um erro de nível E_NOTICE será lançado quando isso acontecer. Veja também a referência do manual sobre como $foo[bar] é errado (a não ser que você primeiro define() bar como uma constante). Se você simplesmente quer checar se uma constante foi definida, utilize a função defined().
Estas são as diferenças entre constantes e variáveis:
Exemplo #1 Definindo Constantes
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // imprime "Hello world."
echo Constant; // imprime "Constant" e gera um alerta notice.
?>
Exemplo #2 Definindo Constantes usando a palavra-chave const
<?php
// Funciona a partir do PHP 5.3.0
const CONSTANT = 'Hello World';
echo CONSTANT;
// Funciona a partir do PHP 5.6.0
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
?>
Nota:
Ao contrário das funções definidas através de define(), as constantes definidas usando a palavra-chave const devem ser declarados no escopo de topo (principal), pois são definidas no tempo de compilação. Isso significa que elas não podem ser definidas dentro de funções, laços ou ifs ou blocos try/catch.
Veja também Constantes de Classe.