Forum und email

Constantes

Índice

Uma constante é um identificador (nome) para um único valor. Como o nome sugere, esse valor não pode mudar durante a execução do script (exceção às constantes mágicas, que não são constantes de verdade). As constantes são sensíveis ao caso por padrão. Por convenção, o nomes de constantes são sempre em maiúsculas.

O nome de uma constante tem as mesmas regras de qualquer identificador no PHP. Um nome de constante válida começa com uma letra ou sublinhado, seguido por qualquer número de letras, números ou sublinhados. Em expressões regulares, ela pode ser representada por: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Dica

Você também pode querer dar uma ohada em Guia de nomenclatura em espaço de usuário.

Example#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álidas
define("2FOO",    "alguma coisa");

// Isto é válido, mas deve ser evitado:
// O PHP pode vir a fornercer uma constante mágica
// que danificará seu script
define("__FOO__""alguma coisa");

?>

Nota: Para nossos exemplos, as letras a-z, A-Z e os caracteres ASCII do 127 ao 255 (0x7f-0xff).

Como as superglobals, o escopo de uma constante é global. Você pode acessar constantes de qualquer lugar em seu script sem se preocupar com o escopo. Para mais informações sobre o escopo no PHP, leia a seção do manual escopo de variáveis.

Sintaxe

Você pode definir uma constante utilizando-se da função define(). Quando uma constante é definida, ela não pode ser mais modificada ou anulada.

Somente dados escalares (boolean, integer, float e string) pode ser colocados em constantes. Não defina constantes do tipo resource (recurso).

Você pode obter o valor de uma constante simplesmente especificando seu nome. Diferentemente de variáveis, você não pode prefixar uma constante com um sinal de $. Você também pode utilizar a função constant() para ler o valor de uma constante, se você precisar obter seu valor 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 são geralmente diferentes.

Se você usar uma constante indefinida, o PHP assume o nome da constante como seu próprio valor, como se você tivesse uma string (CONSTANT vs "CONSTANT"). Um erro de nível E_NOTICE será lançado quando isso acontecer. Veja também a referência do manual sobre como $foo[bar] é errado (a não ser que você primeiro define() bar como uma constante). Se você simplesmente quer checar se uma constante foi definida, utilize a função defined().

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

  • Constantes não podem ter um sinal de cifrão ($) antes delas;
  • Constantes só podem ser definidas utilizando a função define(), e não por simples assimilação;
  • Constantes podem ser definidas e acessadas de qualquer lugar sem que a regras de escopo de variáveis seja aplicadas;
  • Constantes não podem ser redefinidas ou eliminadas depois que elas são criadas; e
  • Constantes só podem conter valores escalares.

Example#2 Definindo Constantes

<?php
define
("CONSTANT""Hello world.");
echo 
CONSTANT// imprime "Hello world."
echo Constant// imprime "Constant" e gera um alerta notice.
?>

Veja também Constantes de Classe.