|
В РНР все переменные имеют имя, которые начинаются со знака $,
например $variable. Если взять для сравнения C/C++ и подобные языки, то людям, привыкшим к этим языкам, такой принцип именования
переменных скорее всего покажется
странным. Но на практике такой подход имеет все же определенные преимущества.
Рассмотрим их подробнее.
1. При таком способе формирования имен
переменных их очень легко отличить от остального кода. Если в других языках иногда может возникать
путаница с тем, что при первом взгляде на
код не всегда ясно, - где здесь переменные, а где функции, то в РНР этот
вопрос даже не встает.
2. Данный принцип позволяет очень просто и
элегантно реализовать функциональность, просто недоступную иначе. Например, ссылка на
переменную по ее имени,
хранящемуся в другой переменной:
$name = 'value';
$value = 5;
echo $$name;
В данном примере PHP выведет результат 5. Такие особенности стали
возможны из-за
заложенного в РНР принципа: «anything is an expression» (любая вещь является выражением). Исходя из этого, РНР воспринимает выражение $$name следующим образом:
- интерпретатор
встречает символ ?, а это значит, что следующее выражение является именем переменной;
- интерпретатор встречает еще один символ $
и продолжает поиски имени уже другой переменной, значение которой необходимо
для вычисления значения предыдущего выражения;
- интерпретатор
получаетимя name, находит переменную
с таким именем, берет ее
значение ('value')
и возвращается назад;
- поскольку на
предыдущем шаге мы искали имя переменной, то значение только что вычисленного выражения воспринимается
именно как имя переменной. Интерпретатор ищет переменную с таким именем (value) и возвращает ее результат (5).
Как вы сами видите, это очень удобная и
гибкая система. Достаточно небольшой тренировки, чтобы вы смогли творить чудеса с ее помощью!
Но самое интересное здесь то, что точно также
вы можете оперировать с любыми элементами языка, имеющими имя, т. е., например,
вызывать метод класса по его имени,
содержащемуся в переменной.
Вернуться на главную
|