Sintaxe
Constantes podem ser definidas utilizando a declaração const
ou através da função define().
Enquanto define() permite que uma constante seja
definida usando uma expressão arbitrária, a palavra-chave const
possui
restrições descritas abaixo.
Uma vez definida, a constante não poderá ser modificada ou
anulada.
Quando usando a declaração const
,
somente valores escalares (bool, int,
float e string) e
array constantes contendo apenas valores escalares são aceitos.
É possível definir constantes como um resource,
mas isso deve ser evitado, pois pode ocasionar resultados inesperados.
O valor da costante é acessado simplesmente informando seu nome.
Diferentemente de variáveis, você não prefixará uma
constante com um sinal de $
.
Também pode-se utilizar a função constant() para
ler o valor de uma constante se o nome da constante for obtida 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 sejam geralmente diferentes.
Se uma constante não definida é usada, um erro Error é lançado.
Anteriormente ao PHP 8.0.0, constantes não definidas eram interpretadas como uma
string comum, no caso, uma variável string contendo o nome da própria constante.
Esse mecanismo alternativo ficou obsoleto no PHP 7.2.0, e um alerta nível
E_WARNING
é lançado quando isso acontecer.
Anteriormente ao PHP 7.2.0, um alerta
E_NOTICE era lançado.
Veja também porque
$foo[bar] é
errado a não ser que bar
seja uma constante.
Isto não se aplica às constantes qualificadas,
quais sempre lançam um Error se não definidas.
Nota:
Para conferir se uma constante está definida, utilize a função defined().
Estas são as diferenças entre constantes e variáveis:
-
Constantes não possuem um sinal de cifrão (
$
)
antes delas;
-
Constantes podem ser definidas e acessadas de qualquer lugar sem
que a regras de escopo de variáveis sejam aplicadas;
-
Constantes não podem ser redefinidas ou eliminadas depois
de criadas; e
-
Constantes só podem ter valores escalares ou arrays.
Exemplo #1 Definindo Constantes
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // imprime "Hello world."
echo Constant; // Lança um erro Error: Undefined constant "Constant"
// Anteriormente ao PHP 8.0.0, imprimia "Constant" e emitia um warning.
?>
Exemplo #2 Definindo Constantes usando a palavra-chave const
<?php
// Simple scalar value
const CONSTANT = 'Hello World';
echo CONSTANT;
// Scalar expression
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // imprime "cat"
// Array constante
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // imprime "cat"
?>
Nota:
Ao contrário das constantes definidas através de define(),
as constantes definidas usando a declaração const
devem
ser declaradas no maior escopo que elas serão utiluzadas, em tempo de compilação.
Isto significa que constantes não podem ser declaradas dentro de funções, loops,
if
ou blocos
try
/catch
.