(PHP 4, PHP 5, PHP 7, PHP 8)
define — Define uma constante com nome
Define uma constante com nome em tempo de execução.
constant_name
O nome da constante.
Nota:
É possível definir constante pela função define() com nome reservado ou até mesmo com nome inválido, cujo valor pode (somente) ser recuperado com a função constant(). Entretanto, isto não é recomendado.
value
O valor da constante.
Apesar de ser possível definir constantes do tipo resource, não é recomendado e pode causar comportamento imprevisível.
case_insensitive
Se definido para true
, a constante será definida sem diferenciação de maiúsculas/minúsculas.
O comportamento padrão é diferenciar, isto é,
CONSTANT
e Constant
representam
valores diferentes.
Definir constantes sem diferenciar maiúsculas/minúsculas foi descontinuado a partir do PHP 7.3.0.
A partir do PHP 8.0.0, somente false
é um valor aceitável para este parâmetro, passar
true
irá gerar um alerta.
Nota:
Constantes insensíveis a maiúsculas/minúsculas são armazenadas em minúsculas.
Versão | Descrição |
---|---|
8.1.0 |
value agora pode ser um objeto.
|
8.0.0 |
Passar true para case_insensitive agora emite um E_WARNING . Passar false ainda é permitido.
|
7.3.0 |
case_insensitive foi descontinuado e será removido na versão 8.0.0.
|
Exemplo #1 Definindo Constantes
<?php
define("CONSTANTE", "Olá, mundo.");
echo CONSTANTE; // exibe "Olá, mundo."
echo Constante; // exibe "Constante" e emite um aviso.
define("CUMPRIMENTO", "Tudo bem?", true);
echo CUMPRIMENTO; // exibe "Tudo bem?"
echo Cumprimento; // exibe "Tudo bem?"
// Funciona a partir do PHP 7
define('ANIMAIS', array(
'cachorro',
'gato',
'pássaro'
));
echo ANIMAIS[1]; // exibe "gato"
?>
Exemplo #2 Constantes com Nomes Reservados
Este exemplo ilustra a possibilidade de definir uma constante com o mesmo nome de uma constante mágica. Como o comportamento resultante obviamente é confuso, não é portanto recomendado fazê-lo na prática.
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>
O exemplo acima produzirá:
bool(false) bool(true) string(4) "test" int(5)