Variáveis variáveis, constantes mágicas e sintaxe heredoc em strings no PHP
Criado em: 22/03/2010
Agora que já possui certo conhecimento em variáveis, tipos de dados e em alguns operadores iremos nos aprofundar um pouco mais em alguns itens antes de entrarmos nas estruturas de controle.
Variáveis variáveis, variáveis dinâmicas ou ainda variáveis criadas durante a execução no PHP
Independente do nome que encontrar por aí em livros ou mesmo pela internet, é um recurso que nos permite a criação de uma variável através do conteúdo de outra variável.
Para criar uma variável variável utiliza-se de uma variável para servir de identificador para outra que é criada. Para isso utiliza-se duas vezes o símbolo de $
, ou seja, devemos utilizar $$
. Veja no exemplo a seguir.
<?php // Declarando o valor da variável $a $a = 'nome'; /** * Criamos $$a, que como possui dois $ * também pode ser chamada pelo valor da * variável $a ou seja "nome" */ $$a = 'Mauro'; // Exibo $a e $nome que foi criada dinâmicamente echo $a . ' : ' . $nome; ?>
Como você pode ver no exemplo podemos criar a variável a partir do valor de outra variável. O contrário também é válido ao invés de criarmos a variável, em nosso caso, $nome
dinamicamente definimos seu valor normalmente no entanto quando formos exibir seu resultado em tela podemos acessar seu valor através de $$a
, lembrando que para que isto funcione $a
deve possuir o mesmo valor da variável que será criada em nosso caso “nome”. Observe o exemplo:
<?php // Declarando o valor da variável $a $a = 'nome'; /** * Criamos $nome, que é * o mesmo valor de $a em * sua declaração */ $nome = 'Mauro'; /** * Exibo $a e $$a que foi criada * dinâmicamente e é o equivalente a acessar * a variável $nome */ echo $a . ' : ' . $$a; ?>
Constantes Mágicas no PHP
O PHP fornece um grande número de constantes predefinidas. Entretanto a maioria dessas constantes são criadas por várias extensões, e somente estarão presentes quando essas extensões estiverem disponíveis. Aqui você pode ver as constantes predefinidas, lembrando que para visualizar seu conteúdo apenas seguindo a regra de que elas são dependentes de extensões.
As constantes mágicas não possuem dependências, no entanto seus valores mudam dependendo de onde elas são executadas. Veja uma tabela com as 7 constantes mágicas que o PHP possui:
Constante | Valor retornado |
---|---|
__LINE__ |
A linha atual do script. |
__FILE__ |
O caminho completo e nome do arquivo. |
__DIR__ |
O diretório do arquivo. |
__FUNCTION__ |
O nome da função. |
__CLASS__ |
O nome da classe. |
__METHOD__ |
O nome do método de classe. |
__NAMESPACE__ |
O nome do atual namespace. |
Veja um exemplo do valor retornado pelas constantes mágicas:
<?php echo __LINE__ . '<br />' . PHP_EOL; echo __FILE__ . '<br />' . PHP_EOL; echo __DIR__ . '<br />' . PHP_EOL; echo __LINE__; ?>
Utilizamos apenas as constantes mágicas no escopo do nosso aprendizado, ou seja, não executamos a constante mágica equivalente a funções (__FUNCTION__
) e nem as equivalentes a classes (__CLASS__
, __METHOD__
, __NAMESPACE__
).
Com o avançar de nossos estudos ao nos aprofundarmos em funções, classes e objetos você será capaz de ver o resultado do uso destas constantes mágicas.
Sintaxe Heredoc em strings no PHP
Agora que já esta familiarizado em como declarar strings, com aspas simples e aspas duplas, iremos aprender um novo modo de declarar strings, a sintaxe heredoc.
Para declararmos uma string com a sintaxe heredoc utiliza-se primeiro <<<
(três sinais de menor) e em seguida definimos o delimitador, aí definimos o texto contido na string, em seguida finalizamos a string com o delimitador. Veja um exemplo:
<?php $texto = <<<EOT Eu sou uma string declarada com a sintaxe heredoc. EOT; echo $texto; ?>
- O delimitador, no nosso caso
EOT
, tem que ser iniciados apenas com uma letra ou_
(sublinhado) e podem ser seguido de letras ou algarismos, ou seja, números podem aparecer em outras posições exceto na primeira - Assim como na declaração de variáveis nunca utilize caracteres especiais em nome do delimitador como acentos (é í ó) cedilha (ç)
- O delimitador final não deve ser acompanhado de nenhum outro caractere, exceto o ponto e vírgula
- O delimitador final deve ser iniciado no inicio da linha sem tabulações ou espaço, por isso nunca o endente.
- Resumindo o delimitador final não deve conter nada antes e nem depois do delimitador final, exceto o ponto e vírgula após sua declaração.
Veja um exemplo de como estaríamos declarando de forma errada uma string com a sintaxe heredoc.
<?php $texto = <<<7ÉOT Eu sou uma string declarada com a sintaxe heredoc. 7éOT; echo $texto; ?>
No exemplo temos todos os erros possíveis como:
- iniciar a string com caractere não alfanumérico ou underline
- utilizar caractere especial no nome do delimitador
- edentar o delimitador final
- definir o delimitador final, diferente do de abertura, no exemplo o caractere “é” maiúsculo e minúsculo.
- Tentar escrever algo na mesma linha após o delimitador final.
As strings declaradas como heredoc se comportam como as aspas duplas, exceto que você não precisa utilizar os caracteres de escape para definir a aspas simples e as aspas duplas. E como as strings declaradas com aspas duplas elas interpretam as variáveis veja um exemplo:
<?php $nome = 'Mauro George'; $texto = <<<PHP Eu me chamo {$nome}, como esta string está declarada como Heredoc eu posso exibir " e ' também sem escapar. PHP; echo $texto; ?>
Observe que além de exibir as aspas simples e duplas sem necessitar escapar ainda pude exibir o valor de minha variável.
Utilize sempre colchetes envolvendo uma variável, como no exemplo anterior, quando ela for interpretada dentro de outra variável, ou seja na declaração de string como heredoc e na declaração de strings com aspas duplas.