Aprender PHP

Assine o RSS

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.

Comentários

comments powered by Disqus