Комментарии

Каким образом загружаются классы
( 0 Голосов )

Далее очень важно понять, каким образом базовые классы Joomla загружаются в рабочую область оперативной памяти. Анализируя функцию j import (), которая обычно применяется для загрузки основных классов Joomla, можно заметить, что она находится в файле libraries/loader.php и является совершенно автономной функцией, а не методом класса. Именно поэтому она вызывается по имени функции, а не имени класса. Ниже приведен исходный код этой функции.

jimport($path) {
JLoader::import($path); }

Эта функция просто вызывает метод JLoader: : import (). Ниже приведена первая строка кода с комментарием из этого метода.

// импортировать  только  библиотеку,   если этого  еще  не  было  сделано if   (! isset(self::$imported[$key]))

В этой строке кода проверяется, был ли класс уже импортирован. В качестве аргумента вызываемой функции isset () указывается статический ассоциативный массив self:: $ imported [ ] с ключом $ key, совпадающим с аргументом, передаваемым функции jimport () (например, ' joomla.plugin.plugin'), а также логическим значением true или false. После импорта класса в этот массив добавляется элемент, которому присваивается логическое значение true, если импорт произведен успешно, а иначе — логическое значение false. Таким образом, класс импортируется в Joomla лишь один раз и без повторных попыток. В методах JLoader: : load () и JLoader: :_autoload () (автозагрузчик платформы) также проверяется, был ли класс уже загружен, прежде чем пытаться загрузить его.

Из всего сказанного выше можно сделать следующий очень важный вывод: если класс уже присутствует в оперативной памяти, т.е. загружен в ее рабочую область, значит, операция его загрузки должна быть пропущена* а из метода просто возвращается логическое значение true. Следовательно, ни один из методов Joomla не должен пытаться загрузить класс еще раз.

Это означает, что подключаемый модуль может быть использован для загрузки класса в рабочую область оперативной памяти, при условии, что это будет сделано до того, как данный класс загрузится основными программами Joomla. В таком случае методы из загруженного класса будут применяться вместо методов из основного класса. И зачастую системные подключаемые модули загружаются в рабочую область оперативной памяти в самом начале цикла исполнения Joomla, т.е. прежде большинства, но не всех основных классов Joomla.


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


 
Похожие новости
Добавить комментарий


Защитный код