Каким образом загружаются классы |
Далее очень важно понять, каким образом базовые классы Joomla загружаются в рабочую область оперативной памяти. Анализируя функцию j import (), которая обычно применяется для загрузки основных классов Joomla, можно заметить, что она находится в файле libraries/loader.php и является совершенно автономной функцией, а не методом класса. Именно поэтому она вызывается по имени функции, а не имени класса. Ниже приведен исходный код этой функции. jimport($path) { Эта функция просто вызывает метод JLoader: : import (). Ниже приведена первая строка кода с комментарием из этого метода. // импортировать только библиотеку, если этого еще не было сделано if (! isset(self::$imported[$key])) В этой строке кода проверяется, был ли класс уже импортирован. В качестве аргумента вызываемой функции isset () указывается статический ассоциативный массив self:: $ imported [ ] с ключом $ key, совпадающим с аргументом, передаваемым функции Из всего сказанного выше можно сделать следующий очень важный вывод: если класс уже присутствует в оперативной памяти, т.е. загружен в ее рабочую область, значит, операция его загрузки должна быть пропущена* а из метода просто возвращается логическое значение true. Следовательно, ни один из методов Joomla не должен пытаться загрузить класс еще раз. Это означает, что подключаемый модуль может быть использован для загрузки класса в рабочую область оперативной памяти, при условии, что это будет сделано до того, как данный класс загрузится основными программами Joomla. В таком случае методы из загруженного класса будут применяться вместо методов из основного класса. И зачастую системные подключаемые модули загружаются в рабочую область оперативной памяти в самом начале цикла исполнения Joomla, т.е. прежде большинства, но не всех основных классов Joomla.
Понравился материал? Пригодилась информация? Плюсани в социалки!
|
Похожие новости | |
|