Uma constante é uma variável com um valor que não pode ser alterado no script. Tal valor deve ser atribuído ao mesmo tempo quando a constante é criado. O PHP fornece dois métodos para criar constantes: o modificador “const” e a função “define”.
const
O modificador const é usado para criar constantes de classe. Ao contrário de propriedades regulares, constantes de classes não têm um nível de acesso especificado, eles estão sempre visível publicamente. Eles também não usam o cifrão ($). A convenção de nomenclatura para constantes é todo em maiúsculas, com sublinhados separando cada palavra.
class MyCircle { const PI = 3.14; }
Deve ser atribuída um valor quando eles são criados. Como propriedades estáticas, uma constante só pode ser inicializado com um valor constante e não com uma expressão. Constantes de classe são referenciados da mesma forma como propriedades estáticas, exceto que eles não usam o cifrão.
<?php echo MyCircle::PI; // "3.14" ?>
O modificador const não pode ser aplicado a variáveis locais ou parâmetros. No entanto, a partir do PHP 5.3 const pode ser usado para criar constantes globais. Tal constante é definido no âmbito global e pode ser acedida em qualquer lugar no script.
<?php const PI = 3.14; echo PI; // "3.14" ?>
Define
A função define pode criar ambas, constantes globais e locais, mas não constantes de classe. O primeiro argumento para esta função é o nome da constante e o segundo é o seu valor.
<?php define('DEBUG', 1); ?>
Assim como as constantes criados com const, definir constantes são usados o sinal de dólar e seu valor não pode ser modificado.
<?php echo DEBUG; // "1" ?>
Com constantes criadas com const, o valor para definir pode ser qualquer tipo de dados escalar: integer, float, string ou bool. No entanto, ao contrário de const a função de define permite uma expressão para ser utilizada na atribuição, tal como uma variável ou o resultado de uma expressão matemática.
<?php define('ONE', 1); // 1 define('TWO', ONE+1); // 2 ?>
Constante diferenciam maiúsculas de minúsculas por padrão. No entanto, a função define leva um terceiro argumento opcional que pode ser definido como true para criar uma constante de maiúsculas e minúsculas.
<?php define('DEBUG', 1, true); echo debug; // "1" ?>
Para verificar se uma constante já existe a função define pode ser utilizada. Esta função funciona tanto para constantes criados com const e define.
<?php if (!defined('PI')) { define('PI', 3.14); } ?>
Const e define
O modificador const cria uma constante em tempo de compilação. Em contraste, define cria uma constante de tempo de execução que não está definido até que em tempo de execução. Esta é a razão pela qual constantes define podem ser atribuídos com valores expressionais, enquanto const requer valores constantes que são conhecidos somente em tempo de compilação.
<?php const PI = 3.14; // compile-time constant define('BIT_2', 1 << 2); // run-time constant ?>
Só const pode ser usado para constantes de classe e para definir constantes locais. No entanto, ao criar constantes globais ambos const e define são permitidos. Nestas circunstâncias usando const é geralmente preferível. Porque const é um construtor de linguagem que ele lê melhor do que define que é uma função. Constantes de tempo de compilação também são ligeiramente mais rápido do que em tempo de execução constantes. A única excepção é quando a constante condicionalmente é definido, ou um valor de expressão é necessário, neste caso, define deve ser usado.
Diretriz para Constante
Em geral, é uma boa ideia criar constantes ao invés de variáveis se seus valores não precisam ser alterados. Isso garante que as variáveis não será alterada em qualquer lugar no script por engano, o que por sua vez ajuda a evitar erros.
Constates mágicas
O PHP fornece oito constantes predefinidas. Estes são chamados de constantes mágicas como os seus valores mudam dependendo de onde eles são usados.
__LINE__ Número da linha atual do arquivo. __FILE__ Caminho completo e nome do arquivo. __DIR__ Diretório do arquivo. __FUNCTION__ Nome da função. __CLASS__ Nome da classe, incluindo namespace. __TRAIT__ Nome Trait incluindo namespace. __METHOD__ Nome do método de classe. __NAMESPACE__ Namespace atual.
Constantes mágicas são especialmente úteis para fins de depuração. Por exemplo, o valor de __ LINE__ mostra a linha em que ele aparece no script.
<?php if(!isset($var)) { echo '$var não definido na linha ' . __LINE__; } ?>
LINK Importantes
http://php.net/manual/pt_BR/language.constants.php
http://php.net/manual/pt_BR/language.constants.predefined.php