Files
2026-07-30 11:56:32 +03:00
..
2026-07-30 11:56:32 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00

Ядро и жизненный цикл запроса

Как запрос проходит через движок: от index.php до ответа. Здесь — базовые кирпичи, на которых стоят и публичный сайт, и панель управления. Её каталог по умолчанию называется /adminx, но может быть переименован.


Жизненный цикл (упрощённо)

index.php / adminx/index.php
      │
      ▼
system/bootstrap.php → App::init()      // автозагрузчик, БД, сессия, настройки, Twig, хуки
      │
      ▼
Router::match()                          // найти маршрут по пути и методу
      │
      ▼
handler (Controller::method / Closure)   // выполнить обработчик, получить строку/JSON
      │
      ▼
Response                                 // отдать HTML/JSON + статус

В админке точка входа adminx/index.php дополнительно поднимает модули (ModuleManager) и маршрутизацию через Dispatcher.


Карта раздела

Страница О чём
Инициализация (bootstrap) Что поднимает App::init(): автозагрузка, БД, сессия, настройки, Twig, хуки.
Маршрутизация (Router) get/post/put/delete, параметры {id}, группы, _method.
Контроллеры Базовый App\Common\Controller: render / json / success / error / csrfGuard.
Авторизация (Auth) Пользователь админки и посетитель сайта: check / user / id / attempt.
Сессии и CSRF Session: хранение, токен CSRF, проверка форм и AJAX.
Права (Permission) Проверка разрешений, роли, регистрация прав модулями.

Два контекста

Движок обслуживает два независимых контекста в одной кодовой базе:

Публичный сайт Админка /adminx
Вход index.php adminx/index.php
Пользователь Auth::publicUser() (посетитель) Auth::user() / systemUser() (админ)
Права Permission::check()
Модули публичные модули модули панели (ModuleManager)

Сессия и CSRF-механика — общие (одна DB-сессия и cookie), что сохраняет вход при переходах между сайтом и панелью.

Расширения регистрируют namespaces и runtime-вклады декларативно через descriptor модуля; ручное изменение загрузчика для обычного модуля не требуется.