NPJ next: RequestHandler ...

Главная | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

Request Handler


«Основной обработчик»: /npj/classes/NpjRequestHandler.php


Примечание: class NpjRequestHandler extends RequestHandler (адрес последнего: /core/classes/RequestHandler.php)


1) Для создания объекта $rh вызывается конструктор NpjRequestHandler("config.php")


2) При конструировании $rh сначала вызывается метод RequestHandler::RequestHandler() (собственно, это конструктор класса RequestHandler), с файлом config.php в виде параметра.


a) config.php, в свою очередь, подключает следующие файлы конфигурации:

б) RequestHandler() подключает с помощью метода RequestHandler::UseClass() (это обертка для require(), по сути) следующие классы:

3) В результате объект $rh содержит все настройки и переменные, нужные для работы, и может вызывать методы для разбора URL, понимаемого как команда программе, чтобы передать управление обработчику этой команды. Главный метод для этой цели: $rh->_HandleRequest() (который вызывает, в свою очередь, другие приватные методы). (Правильно заметили разработчики в комментах: NpjRequestHandler::_HandleRequest() – это holy crap!)


Что читать дальше


Моего пера: $rh – детали реализации.


Документация по разбору URLа где-то была, а вот все ссылки на доки по Манифесто сдохли.
Но для знакомства с общей концепцией можно читать доки к Rocket, который мало того что те же люди делали, так еще, подозреваю, значительная часть кода Manifesto перешла в него без особых исправлений (впрочем, здесь я могу сильно ошибаться).
В общем, читать:
Общее устройство ядра Rocket
Диаграммы обработки основного запроса – RequestHandler
Движок шаблонов RocketTE


В комментах к RequestHandler из Rocket написано: "[RequestHandler] организует последовательность обработки и функциональное окружение. Служит мостом для сообщения между собой подключаемых модулей".
А на диаграмме Николая Яремко указаны два главных направления обработки запроса: 1) с редиректом (запросить другую страницу, попутно что-то сделать с данными) и 2) без редиректа (обработать данные, модифицировать текущую страницу) – ЭТО ВАЖНО!


Всплыли еще вот такие подробности (достаточно, в принципе, чтобы уяснить себе общее устройство модулей):
Сторонние модули
Небольшое руководство для написания модулей


САМЫЙ ГЛАВНЫЙ ОБЪЕКТ В НПЖ называется $rh, класс NpjRequestHandler

 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]