Комментарии

Каким образом импортируются подключаемые модули
( 0 Голосов )

Как было показано ранее, для запуска подключаемого модуля на выполнение сначала вызывается метод JPluginHelper:: importPlugin {), импортирующий этот модуль. В итоге классы и методы подключаемого модуля загружаются в рабочую область оперативной памяти. Если проанализировать принцип действия данного метода, то можно обнаружить, что код, выполняющий импорт подключаемого модуля, фактически находится в теле закрытого метода import () из класса JPluginHelper, находящегося в файле libraries/joomla/plugin/helper.php, как показано ниже.

(!isset($paths[$path])) {
$path; } $paths[$path] = true;

В первой строке этого фрагмента кода проверяется, введен ли данный конкретный подключаемый модуль. Переменная $path представляет собой ассоциативный массив, содержащий все импортированные подключаемые модули. Ключом к этому массиву служит полный путь к файлу каждого подключаемого модуля, а значением каждого элемента данного массива — имя класса. Для проверки наличия конкретного элемента в массиве вызывается функция isset () языка PHP. Если элемент отсутствует в массиве, команда require_once языка РНР включает файл искомого подключаемого модуля. И наконец, элементу массива присваивается логическое значение true. Этим гарантируется, что в следующий раз данный элемент будет установлен в массиве, а следовательно, выполнять еще раз команду require_once для включения того же самого файла не придется. В отношении рассматриваемого здесь процесса необходимо отметить следующее.

Как пояснялось ранее, в файлах подключаемых модулей, как правило, объявляются классы, а следовательно, на данном этапе код вообще не выполняется. Происходит лишь загрузка объявляемого класса и его методов в оперативную память, чтобы эти методы можно было вызвать далее в цикле исполнения. Поэтому в результате вызова метода JPluginHelper:: importPlugin () код фактически не выполняется.

В Joomla совсем не требуется, чтобы подключаемый модуль служил для объявления класса. Подключаемый модуль может быть простым сценарием на языке РНР, который выполняется сразу же после включения его файла. Если подключаемый модуль создается именно таким образом, он будет выполнен, как только завершит свою работу метод JPluginHelper:: importPlugin (), а не в тот момент, когда инициируется событие.

Благодаря этому обеспечивается механизм загрузки любого сценария РНР всякий раз, когда импортируются подключаемые модули.


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


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