Além de ser um “recipiente” para os dados, as variáveis ​​do PHP tem algumas outras características que serão examinados neste capítulo. Estas são características que não são comumente usados, mas são bons para conhecer.

Variáveis entre chaves

Um nome de variável pode ser especificado explicitamente colocando-o entre chaves. Isto é conhecido comosintaxe encaracolado”(curly), ou complexo. Para ilustrar, o seguinte código irá imprimir a variável mesmo que aparece no meio de uma palavra.

<?php
$fruit = 'Apple';
echo "Two {$fruit}s"; // "Two Apples"

Mais importante ainda, a sintaxe entre chaves é útil para formar os nomes das variáveis ​​de expressões. Considere o seguinte código que usa a sintaxe entre chaves para construir nomes para três variáveis​​.

<?php
for ($i = 1; $i <= 3; $i++)
    ${'x'.$i} = $i;

echo "$x1 $x2 $x3"; // "1 2 3"

A sintaxe entre chaves  é necessária aqui, porque a expressão precisa ser avaliada, a fim de formar um nome de variável válido. Se a expressão tem apenas uma única variável as chaves não são necessários.

<?php
for ($i = 'a'; $i <= 'c'; $i++)
$$i = $i;

echo "$a $b $c"; // "a b c"

Esta sintaxe é conhecido como uma variável variável em PHP.

“Variáveis ​​variáveis”

Uma “variável variável” é uma variável cujo nome pode ser alterado por meio de código. Como exemplo, considere o seguinte variável regular.

$a = ‘foo’;

O valor dessa variável pode ser usado como um nome de variável, colocando um sinal de dólar adicional antes.

$$a = ‘bar’;

O valor de $a, o que é “foo”, agora se torna um nome alternativo para a variável $$a.

echo $foo; // “bar”
echo $$a; // “bar”

Um exemplo de uso para isso seria para gerar variáveis ​​de uma matriz.

<?php
$arr = array('a' => 'Foo', 'b' => 'Bar');

foreach ($arr as $key => $value){
    $$key = $value;
}

echo "$a $b"; // "Foo Bar"

Nomes de funções variáveis

Ao colocar parênteses após uma variável seu valor será avaliado como o nome para a função.

<?php
function myPrint($s) { echo $s; }

$func = 'myPrint';
$func('Hello'); // "Hello"

Este comportamento não vai trabalhar com construções de linguagem embutidos, tais como eco.

echo('Hello'); // "Hello"

$func = 'echo';
$func('Hello'); // error

Nomes de classe variáveis

Semelhante a função nomes de variáveis​​, as aulas podem ser referenciados usando variáveis ​​de cadeia. Esta funcionalidade foi introduzida no PHP 5.3.

class MyClass {}

$classname = 'MyClass';
$obj = new $classname();

O mecanismo de acesso a entidades de código via strings e variáveis ​​de cadeia também funciona para membros de uma classe ou instância.

<?php
class MyClass
{
public $myProperty = 10;
}

$obj = new MyClass();
echo $obj->{'myProperty'}; // "10"

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.