(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 Defining Constants
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // mostra "Hello world."
echo Constant; // mostra "Constant" e emite uma nota.
define("GREETING", "Hello you.", true);
echo GREETING; // mostra "Hello you."
echo Greeting; // mostra "Hello you."
// Funciona a partir do PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // mostra "cat"
?>
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)