Комментарии

Глобальные объекты в Joomla 2.5
( 2 Голосов )
Некоторые объекты используются в стольких местах кода Joomla, что было бы целесообразно, чтобы они были легко доступны постоянно. Как упоминалось ранее, класс JFactory из файла libraries/joomla/factory.php загружается в тот момент, когда сценарий из файла libraries/joomla/import.php загружается по сценарию из файла includes/framework.php. Класс JFactory обеспечивает быстрый доступ к целому ряду объектов практически из любого места в программе. Все эти объекты перечислены в таблице ниже.

 

Тип объекта Описание Код доступа
Japplication Объект приложения $app = JFactory: :getApplication();
JSite JSite в пользовательской части сайта  
Jadministrator Jadministrator в административной части сайта  
Jregistry Значения из файла configuration.php в форме объекта типа JRegistry $config = JFactory::getConfig();
Jsession Текущий сеанс работы с веб-сайтом $session = JFactory:igetSession();
Jlanguage Объект языка $language = JFactory:igetLanguage();
Jdocument, JdocumentHTML, JdocumentFeed, JdocumentJSON Текущий документ $document = JFactory::getDocument();
Juser Текущий пользователь $user = JFactory::getUser();
Jaccess Текущий объект доступа (используется при контроле доступа) $access = JFactory::getACL();
Jdatabase Объект базы данных, используемый для выполнения запросов $dbo = JFactory::getDbo();
Jmail Почтовый объект для отправки электронной почты с веб-сайта $mail = JFactory::getMailer();
JXMLElement Элемент разметки XML $xml = JFactory::getXML($pathToXml);
Jeditor Объект редактора $editor = JFactory::getEditor();
JURI Объект URI $uri = JFactory::getUri();
JDate Объект даты и времени $date = JFactory::getDate();
 
Кроме класса JDate, каждый из классов, перечисленных в таблице выше, должен иметь лишь один объект данного класса. Например, в пользовательской части веб-сайта должен быть только один объект приложения типа JSite, а в административной части — только один аналогичный объект типа JAdministrator. Аналогично должен быть только один объект типа JSession, JUser, JDatabase и т.д.
 
Для подобных случаев в объектно-ориентированном программировании нередко служат шаблоны проектирования, называемые "одиночкой" и "фабрикой" и обеспечивающие существование лишь одного объекта данного типа в любой заданный момент времени. И действуют они по очень простому принципу.
 
Рассмотрим этот принцип на примере применения объекта приложения. В классе JFactory содержится поле $аррlication, где хранится один объект приложения, которым нужно пользоваться в течение всего цикла выполнения команд. И когда потребуется объект приложения, он может быть получен по команде JFactory: : getApplication ().
 
При выполнении этой команды в классе JFactory сначала проверяется, имеется ли уже объект приложения в поле $аррlication. Если этот объект имеется, то он просто возвращается из данного поля. А если поле $application пустое, это означает, что в данном цикле мы впервые пытаемся получить доступ к объекту приложения. 
 
В таком случае мы создаем новый объект приложения, сохраняем его в поле $application из класса JFactory, а затем возвращаем его из данного поля. Таким образом, единственный объект приложения подготавливается в поле $application из класса JFactory для последующего применения в любой момент, когда он может потребоваться.
 

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


Вам также будет интересно:

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