Переменные переменных в PHP
В этой статье речь пойдет о так называемых — «переменные переменных«.
Что же это??? Наверняка каждый программист php сталкивался с переменными, которые имеют нестандартное название, точнее нестандартное создание переменных ($$ и тд), вот примеры
$$someVariable
${'rrr'}
$f()
Все это так называемые — «переменные переменных«. Это значение переменной, которое может стать самой переменной.
Разберем как они работают. Перед Вами небольшой код в котором я постарался собрать все примеры.
<?php
function myFunc()
{
echo 'Hello<br>';
}
$myVariable = 'myFunc';
$myVariable();
/*----------------------------------------*/
$someVar = 'hello';
$$someVar = 'Auf Wiedersehen<br>';
echo $hello;
/*----------------------------------------*/
$втораяПеременная = '123';
$$втораяПеременная = 'apple';
echo ${'123'};
?>
На экране будет выведено:
Hello Auf Wiedersehen apple
Я объясню на одном примере :
function myFunc()
{
echo 'Hello<br>';
}
$myVariable = 'myFunc';
$myVariable();
Тут видно, что создана ф-ция с названием myFunc которая выведет слово Hello<br>. Мы конечно можем просто вызвать ф-цию через обращение к ней myFunc(); , но можно воспользоваться и другой конструкцией. Создать переменную (любую) потом присвоить ей значение — это само название ф-ции. И применив к переменной скобки () мы вызовем на исполнение данную ф-цию.
Многие могут сказать, мол чё за маразм, нафиг надо, чего путаете, но поверте, когда будет большой опыт, то будут ситуации в которых эти конструкции сильно пригодятся.
В последнем примере, как Вы думаете, почему я применил такой подход ${‘123’}; зачем эти фигурные скобки???? Ответ — т.к переменная не может начинаться с цифры, а $втораяПеременная = ‘123’; , точнее значение переменной, которое потом преобразуется в переменную, именно цифра, то для экранирования, обхода этого ограничения, используется ${‘someVar’} конструкция.
И еще, название переменных может быть не только на латинице, как пишется в некоторых книгах [a-zA-Z_0-9], но даже и иероглифы $? = ‘123’; (только если кодировка файла UTF-8, естественно).
Полезная ссылка:
http://www.php.net/manual/en/language.variables.php
Всем удачи, Максим.
Статья просмотренна 47400 раз, зашло посетителей 13201