Начало или продолжение сеанса в Joomla |
Итак, вернемся к файлу index.php и рассмотрим в нем следующий ряд строк кода, приведенных в листинге ниже.
Методы getApplication () и initialise () из файла index.php:
// пометить состояние после загрузки в профилировщике JDEBUG ? $_PROFILER->mark('afterLoad') : null; // Получить экземпляр приложения $app = JFactory::getApplication('site'); // Инициализировать приложение $app->initialise(); // Пометить состояние после инициализации в профилировщике JDEBUG ? $_PROFILER->mark('afterInitialise') : null; He будем пока что обращать особого внимания на два оператора отладки JDEBUG в этом фрагменте кода. Ведь при нормальной работе они пропускаются. Эти операторы помогают точнее оценить производительность отдельных частей кода.
Итак, в данном фрагменте кода сначала создается объект приложения, сохраняемый в переменной $арр, а затем выполняется его метод initialise (). В результате создания объекта приложения загружается класс JSite из файла includes/application.php. Этот класс служит расширением класса JApplication. Аналогичный класс JAdministrator из файла administrator/includes/application.php служит для создания объекта приложения в административной части веб-сайта.
С этого момента, собственно, и начинается сам сеанс работы с веб-сайтом Joomla. Мы загружаем уже имеющийся сеанс или создаем новый, если ничего другого не найдено. Напомним, что Joomla ничего не известно о том, что происходило в предыдущих циклах выполнения команд, за исключением того, что было сохранено в сеансе работы или базе данных. Именно поэтому так важно найти существующий сеанс, чтобы перенести информацию из предыдущего цикла в следующий. Кроме того, в данный момент загружается файл configuration .php, предоставляющий доступ к базе данных Joomla и другим настройкам данного конкретного веб-сайта.
В данный момент выполняется еще одна важная операция: создание поля request Time. Это поле из класса JApplication содержит отметку даты и времени по Гринвичу, с которых начинается цикл выполнения запросов. Если же требуется поле для отметки текущих даты и времени, этого нетрудно добиться с помощью вызова метода $арр-> requestTime () или JFactory: : get Application () ->requestTime (). В отличие от результата вызова метода now (), значение подобной отметки остается постоянным в течение всего цикла выполнения команд.
Далее выполняется метод initialise (), инициализирующий приложение. А поскольку мы находимся в классе JSite, то данный метод выполняется из файла includes/application.php. Основное назначение этого метода — сначала выяснить, какой именно язык требуется пользователю, а затем загрузить объект этого языка, чтобы правильно перевести текстовые строки в пользовательской части веб-сайта. А в самом конце этого метода вызывается также метод initialise () из родительского класса (parent:: initialise ($options);). Это приводит к вызову метода initialise () класса JApplication из файла libraries/joomla/аррlication/аррlication.php, чтобы выяснить, какой именно редактор подходит данному пользователю.
Понравился материал? Пригодилась информация? Плюсани в социалки!
|
Похожие новости | |