Você está na página 1de 4

Constantes Page 1 of 4

• « Variáveis de fontes externasPHP Manual • Sintaxe »


• Referência da Linguagem
• Constantes

Constantes
Índice
• Sintaxe
• Constantes Predefinidas
• Constantes Mágicas

Uma constante é um identificador (nome) para um valor simples. Como o nome sugere, esse valor não
pode mudar durante a execução do script (exceto para as constantes mágicas, que na verdade não são
constantes). As constantes diferenciam maiúsculas de minúsculas. Por convenção, identificadores de
constantes são sempre em maiúsculas.

Nota:

Antes do PHP 8.0.0, as constantes definidas usando a função define() podem não
diferenciar maiúsculas de minúsculas.

O nome de uma constante segue as mesmas regras de qualquer rótulo no PHP. Um nome de constante
válido começa com uma letra ou sublinhado, seguido por qualquer número de letras, números ou
sublinhados. Como uma expressão regular, seria expresso assim: ^[a-zA-Z_\x80-\xff][a-zA-
Z0-9_\x80-\xff]*$

É possível usar define() para definir constantes com nomes reservados ou mesmo inválidos, cujo valor
só pode ser recuperado com a função constant(). No entanto, isso não é recomendado.

Dica

Veja também o Guia de nomenclatura em espaço de usuário.

Exemplo #1 Nomes de constantes válidos e inválidos


<?php

// Nomes de constantes válidos


define("FOO", "alguma coisa");
define("FOO2", "alguma outra coisa");
define("FOO_BAR", "alguma coisa mais");

// Nomes de constantes inválidos


define("2FOO", "alguma coisa");

// Isso é válido, mas deve ser evitado:


// O PHP pode um dia fornecer uma constante mágica
// que quebrará seu script
define("__FOO__", "alguma coisa");

?>

Nota: Para os exemplos aqui, uma letra é a-z, A-Z e os caracteres ASCII de 128 a 255
(0x80-0xff).

file:///C:/Users/Mtds/AppData/Local/Temp/~hh8494.htm 24/01/2024
Constantes Page 2 of 4

Como as superglobals, o escopo de uma constante é global. As constantes podem ser acessadas de
qualquer lugar em um script, independentemente do escopo. Para mais informações sobre escopo, leia a
seção do manual escopo de variáveis.

Nota: A partir do PHP 7.1.0, as constantes de classe podem ser declaradas com visibilidade
protected ou private, tornando-as disponíveis apenas no escopo hierárquico da classe em
que foram definidas.

• « ConstantesPHP Manual • Constantes Predefinidas »


• Constantes
• Sintaxe

Sintaxe
As constantes podem ser definidas usando a palavra-chave const ou usando a função define().
Enquanto define() permite que uma constante seja definida usando uma expressão arbitrária, a palavra-
chave const possui restrições, conforme descrito no próximo parágrafo. Uma vez definida, a constante
nunca poderá ser modificada ou anulada.

Ao usar a palavra-chave const, somente expressões escalares (bool, int, float e string) e arrays
constantes contendo apenas expressões escalares são aceitos. É possível definir constantes como um
resource, mas isso deve ser evitado, pois pode causar resultados inesperados.

O valor de uma costante é acessado simplesmente informando seu nome. Ao contrário das variáveis,
uma constante não é precedida por um $. Também é possível usar a função constant() para ler o valor
de uma constante se o nome da constante for obtido dinamicamente. Use get_defined_constants() para
obter uma lista de todas as constantes definidas.

Nota: As constantes e variáveis (globais) estão em espaços de nomes diferentes. Isso


implica que, por exemplo, true e $TRUE são geralmente diferentes.

Se uma constante indefinida for usada, um erro Error será lançado. Antes do PHP 8.0.0, constantes
indefinidas eram interpretadas como uma simples string, ou seja, CONSTANTE vs. "CONSTANTE".
Esse mecanismo alternativo tornou-se obsoleto a partir do PHP 7.2.0 e um alerta de nível E_WARNING
será lançado quando isso acontecer. Antes do PHP 7.2.0, um erro de nível E_NOTICE era lançado.
Veja também por que $foo[bar] é errado (a não ser que bar seja uma constante). Isso não se aplica às
constantes (totalmente) qualificadas, que sempre lançarão um Error se forem indefinidas.

Nota: Para verificar se uma constante está definida, use a função defined().

Estas são as diferenças entre constantes e variáveis:

• Constantes não têm um cifrão ($) antes delas;


• Constantes podem ser definidas e acessadas em qualquer lugar sem considerar as regras de
escopo de variáveis;
• Constantes não podem ser redefinidas ou anuladas depois de definidas; e
• Constantes só podem ter valores escalares ou arrays.

Exemplo #1 Definindo Constantes


<?php
define("CONSTANTE", "Olá Mundo.");
echo CONSTANTE; // imprime "Olá Mundo."
echo Constante; // Lança um erro Error: Undefined constant "Constante"
// Antes do PHP 8.0.0, imprime "Constante" e emite um aviso.
?>

file:///C:/Users/Mtds/AppData/Local/Temp/~hh8494.htm 24/01/2024
Constantes Page 3 of 4

Exemplo #2 Definindo Constantes usando a palavra-chave const


<?php
// Valor escalar simples
const CONSTANTE = 'Olá Mundo';

echo CONSTANTE;

// Expressão escalar
const OUTRA_CONSTANTE = CONSTANTE . '; Adeus Mundo';
echo OUTRA_CONSTANTE;

const ANIMAIS = array('cachorro', 'gato', 'pássaro');


echo ANIMAIS[1]; // imprime "gato"

// Array constante
define('ANIMAIS', array(
'cachorro',
'gato',
'pássaro'
));
echo ANIMAIS[1]; // imprime "gato"
?>

Nota:

Ao contrário das constantes definidas usando define(), as constantes definidas usando a


palavra-chave const devem ser declaradas no escopo mais externo porque são definidas
em tempo de compilação. Isto significa que constantes não podem ser declaradas dentro de
funções, loops, declarações if ou blocos try/catch.

Veja Também

• Constantes de Classe

• « SintaxePHP Manual • Constantes Mágicas »


• Constantes
• Constantes Predefinidas

Constantes Predefinidas
O PHP fornece um grande número de constantes predefinidas para qualquer script executado. Muitas
dessas constantes, no entanto, são criadas por várias extensões e só estarão presentes quando essas
extensões estiverem disponíveis, seja por carregamento dinâmico ou porque foram compiladas.

• « Constantes PredefinidasPHP Manual • Expressões »


• Constantes
• Constantes Mágicas

Constantes Mágicas
Existem nove constantes mágicas que mudam dependendo de onde são usadas. Por exemplo, o valor de
__LINE__ depende da linha em que é usada no script. Todas essas constantes "mágicas" são resolvidas
em tempo de compilação, ao contrário das constantes regulares, que são resolvidas em tempo de
execução. Essas constantes especiais não diferenciam maiúsculas de minúsculas e são as seguintes:

Constantes Mágicas do PHP


Nome Descrição

file:///C:/Users/Mtds/AppData/Local/Temp/~hh8494.htm 24/01/2024
Constantes Page 4 of 4

Nome Descrição
__LINE__ O número da linha atual do arquivo.
__FILE__
O caminho completo e o nome do arquivo com links simbólicos resolvidos. Se
usada dentro de um include, o nome do arquivo incluído será retornado.
O diretório do arquivo. Se usada dentro de um include, o diretório do arquivo
__DIR__ incluído será retornado. Isso é equivalente a dirname(__FILE__). O nome do
diretório não possui barra no final, a menos que seja o diretório raiz.
__FUNCTION__ O nome da função ou {closure} para funções anônimas.
O nome da classe. O nome da classe inclui o namespace em que foi declarada (por
__CLASS__ exemplo, Foo\Bar). Quando usada em um método de trait, __CLASS__ é o nome
da classe em que o trait for usado.
__TRAIT__
O nome do trait. O nome do trait inclui o namespace em que foi declarado (por
exemplo, Foo\Bar).
__METHOD__ O nome do método da classe.
__NAMESPACE__ O nome do namespace atual.
ClassName::class O nome totalmente qualificado da classe.

Veja Também

• ::class
• get_class()
• get_object_vars()
• file_exists()
• function_exists()

file:///C:/Users/Mtds/AppData/Local/Temp/~hh8494.htm 24/01/2024

Você também pode gostar