Комментарии

Включение файлов вместо вызова методов
( 0 Голосов )

В Joomla файлы обычно включаются с помощью команд require, requireonce, include или include_once языка PHP. Как пояснялось в предыдущей главе, если включаемый файл содержит объявление класса, этот класс загружается в оперативную память, но код, по существу, не выполняется. А если включаемый файл содержит обычный сценарий РНР, т.е. последовательность операторов, кроме объявления класса или определения функции, этот сценарий выполняется немедленно, а все переменные, находящиеся в области действия при включении файла, оказываются в области действия включаемого файла.

Это означает, что при включении файла следует очень аккуратно пользоваться именами переменных. Хорошо то, что мы можем пользоваться переменными, определенными ранее в этом файле, если он содержит оператор include или require (например, переменной $params в файле mod_users_latest.php рассматриваемого здесь модуля). Но плохо то, что мы можем получить неожиданный результат, если случайно воспользуемся одной и той же переменной как во включенном, так и во включающем файле. В частности, мы можем случайно изменить значение переменной, используемой далее в вызывающей части программы. Следовательно, мы должны очень аккуратно обращаться с переменными во включаемых файлах, не содержащих объявления классов.

Совсем иначе дело обстоит с классами и методами. Если не указано иное, все переменные в классах и методах являются локальными для класса или метода. Поэтому при вызове метода переменные из вызывающей части программы оказываются за пределами области действия в теле данного метода. Если требуется передать информацию из вызывающей части программы вызываемому методу, мы, как правило, указываем переменные в качестве аргументов этого метода. А если требуется возвратить информацию из вызываемого метода обратно в вызывающую часть программы, мы обычно поручаем это самому методу. Но преимущество такого подхода заключается в том, что в теле методов мы вольны пользоваться любыми именами переменных. И не имеет никакого значения, те же ли это самые переменные, что и в вызывающей части программы. Ведь области их действия не перекрываются.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости