Vimos no artigo 005 o que é uma variável. Enquanto o valor de uma variável varia com o tempo ou uso do sistema o de uma constante permanece sem mudar. Daí vem o nome constante. Não muda.
Uma constante é simplesmente um nome que contém um único valor. Não muda. Fica constante durante todo o uso do programa.
O que diferencia uma variável de uma constante é que o valor de uma constante não pode ser alterado durante a execução do script PHP.
Criando uma Constante em PHP
USANDO DEFINE( )
Para criar uma constante, usamos a função define( ).
Dentro de define colocamos o nome da constante seguido pelo valor. Abaixo, como exemplo, crio a constante LARGURA e dou a ela o valor de 100 metros, logo em seguida uso echo para exibir na tela o valor.
define('LARGURA','100m'); echo LARGURA;
O navegador mostrará: 100m.
Como podemos perceber, ao contrário de uma variável, o nome da constante não começa com o cifrão ($).
A variável pode ter seu valor alterado mas a constante não. Vamos ver. O código abaixo gerará um erro:
<html> <body> <?php define('LARGURA','100m'); define('LARGURA','200m'); ?> </body> </html>
O erro gerado e mostrado no navegador será esse:
Notice: Constant LARGURA already defined in /var/www/html/meusite/index.php on line 6
pois a constante LARGURA já foi definida na linha 6.
USANDO CONST
O PHP fornece outra maneira de definir/criar uma constante por meio da palavra-chave const:
<?php const NOME = MARIA; echo NOME; ?>
Constantes e Array
Um array é um conjunto de valores. uma matriz(tabela).
Uma constante pode armazenar um array.
<?php define('FRUTAS',array('goiaba', 'melancia', 'abacate')); echo FRUTAS[0]; echo "<br>"; echo FRUTAS[2]; echo "<br>"; echo FRUTAS[1]; ?>
O resultado no navegador será:
goiaba
abacate
melancia
Constantes mágicas do PHP
O PHP fornece um grande número de constantes predefinidas para qualquer script.
Exemplo de algumas constantes mágicas:
Obs.: Abaixo, são usados 2 traços _ _ , 2 vezes underline, antes e depois de cada palavra.
- __LINE__ O número da linha atual do arquivo.
- __FILE__ O caminho completo e o nome de arquivo do arquivo.
- __FUNCTION__ esta constante retorna o nome da função como foi declarado (diferencia maiúsculas de minúsculas).
- __CLASS__ esta constante retorna o nome da classe como foi declarado (diferencia maiúsculas de minúsculas).
- __METHOD__ O nome do método é retornado como foi declarado (diferencia maiúsculas de minúsculas).
__DIR__
O diretório do arquivo.
Não se preocupe ainda com esses termos, como Class, Method… iremos vê-los no futuro.
<html> <body> <?php echo __FILE__ ; echo "<br>"; echo "<br>"; echo __LINE__; echo "<br>"; echo "<br>"; echo __LINE__; echo "<br>"; echo __LINE__; echo "<br>"; echo __LINE__; echo "<br>"; echo __LINE__; echo "<br>"; echo __LINE__; echo "<br>"; echo __LINE__; ?> </body> </html>
O echo “<br>” insere uma quebra de linha.
O resultado no navegador:
Não entenda errado! esses são número das linhas do script e não do navegador. São números das linhas da telinha preta acima com o script do PHP.
Observações
- É possível definir constantes que não diferenciam maiúsculas de minúsculas(case-sensitive). No entanto, está obsoleto desde o PHP 7.3
- No PHP 5, uma constante pode conter um único valor como um número, uma string, um booleano(true ou false). A partir do PHP 7.0, uma constante pode conter um array.
- Colocar o nome da constante em maiúsculo é apenas uma convenção, boa prática e não uma obrigação. nomes de constantes diferenciam maiúsculas de minúsculas(case-sensitive). Isso significa que LARGURA e largura são diferentes
- Como variáveis superglobais, você pode acessar constantes de qualquer lugar no script.
- Apenas esses tipos de dados podem ser usados em constantes: boolean, integer, float and string
- Desde o PHP 4.0.2, __FILE__ sempre contém um caminho absoluto enquanto que em versões mais antigas continha um caminho relativo em algumas circunstâncias.
- Const é tratado em tempo de compilação, define() em tempo de execução. Por esse motivo const não pode, por exemplo, ser colocado em uma condição usado if. Por exemplo, o código abaixo gerará o erro: Parse error: syntax error, unexpected ‘const’ (T_CONST) in /var/www/html/meusite/index.php on line 5
<?php if (3 > 2) { const NOME = "maria"; echo NOME; } ?>
- A partir do PHP7 você pode até definir um Array multidimensional como Constant