Phpxcore:php5:core

Материал из phpXCoreWiki.

Перейти к: навигация, поиск

Содержание

[править] Introduction

В данной статья мы постараемся описать ядро системы, как оно работает. Для лучшего понимания советую открыть исходники нашей системы и просматривать код по ходу объяснений.

[править] Initialization

Для начала откроем файл index.php - в данном файле нас интересует только подключение файла Application.php. Открываем и видим что файл содержит класс Application который наследуется от класса XCore, т.е управление передается в конструктор класса XCore (в нем происходит вызов XCore_Loader::init() - он отвечает за регистрация функции autoloader и регистрация путей).

Далее, возвращаясь в файл index.php, видим вызова метода init() класса XCore, этот метод отвечает за инициализацию системы, в нем идет целый ряд вызовов (после каждого вызова идет вызов метода практически с идентичным названием, но начинающихся со знака подчеркивания, все они переопределены в классе Application, и вы можете воспользоваться ими для своих нужд):

[править] initErrorHandlers

Инициализация ErrorHandler'a - теперь управление ошибками полностью ложиться на ядро системы. (см. [www.php.net/set_error_handler set_error_handler] и [www.php.net/set_exception_handler set_exception_handler]). Используйте XCore_Exception вместо Exception.

[править] initSession

Инициализация сессии, создания сущности XCore_Session доступна из статической перменной XCore::$Session

[править] initConfiguration

Чтение конфигурационного файла 'Config.xml', и преобразование в массив. Конфигурационный файл доступен из статической переменной XCore::$Config. Раздел 'options' заноситься в реестр (см. XCore_Registry).

[править] initCache

Инициализация глобального кэша, для понимания принципов работы см. Zend_Cache_Frontend_Page (инициализация настраивается в Config.xml).

[править] initDB

Инициализация соединения с БД. параметры соединения берутся из файла Config.xml. Создается сущность XCore_Database, к которой можно достучаться через статическую переменную XCore::$Database

[править] initRequest

Инициализация класса XCore_Request -> XCore::$Request. Данный класс отвечает за парсинг URL'a. Он разбирает пришедший URL на контролы и параметры (первые передаются в URL как /control0/control1/control2/../../, параметры же в свою очередь передаются как связка ключ-значение и имеют вид /key0::value0/key1::value1/key2::value2/..::../..::../). Часть методов данного класса позаимствовано из Zend_Controller_Request_Http.

[править] initACL

Инициализация XCore_Acl (см. Zend_Acl), для формирования списка ролей и ресурсов используется Config.xml, раздел 'roles'.

[править] initTranslate

Инициализация XCore_Translate (см. Zend_Translate), для настройки данного функционала используется конфигурационный файл translate/Translate.xml. Для идентификации текущего языка используется следующая последовательность: данные из XCore::$Request (первый контрол), данные из сессии, и если ничего не найдено - проверяется конфигурация (язык по умолчанию)

[править] initPlugin

Далее происходит инициализация класса XCore_Plugin -> XCore::$Plugin. Конфигурационный файл plugins/Plugins.xml.

[править] initEventualist

Инициализация XCore_Eventualist -> XCore::$Eventualist. Конфигурационный файл plugins/Eventualist.xml.

[править] initUser

Инициализация XCore_User -> XCore::$User.

[править] initialize

Данный метод отвечает за инициализацию контроллера. На нем необходимо остановиться чтуь-чуть подробнее:

  • создается класс XCore_Router
  • вызывается метод processRequest - данный метод отвечает за определении контроллера (так же инициирует событие processRequest)
  • вызывается метод initializeController


Инициализация контроллера заключается в подключении конфигурационного файла (modules/CONTROLLER_NAME.xml) и скармливания параметров в ACL. Далее идет обработка XCore::$Request - убираются лишние контролы и параметры.

[править] initResponse

Инициализация сразу нескольких классов:

  • XCore::$Response = new XCore_Response()
  • XCore::$View = new XCore_View()
  • XCore::$Document = new XCore_Document()

[править] Run

Далее в файле index.php происходит выполнения метода run(), который в свою очеред вызывает метод execute() у активного контроллера. В данном методе происходит следующее:

  • выполняются actDefault - поведение модулей по умолчанию (см. runDefault параметр в конфигурационном файле контроллера)
  • проверяется права доступа на выполнение связки Module и Action (см. ACL)
  • инициализируется модуль и выполняется запрошенное действие
  • XCore::$View получает вывод для активного модуля (см. XCore_Module::ACTIVE)

[править] Display

Вызов метода display выполняет следующие действия:

  • XCore::$Response отправляет заголовки
  • XCore::$View генерирует HTML
123