Переменные переменных в 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
Всем удачи, Максим.
Статья просмотренна 45435 раз, зашло посетителей 11986