Должен ли я отредактировать ядро ​​приложения, чтобы использовать основной контроллер

Ну, я только начинаю новый проект и выбрал для него symfony2 в качестве фреймворка MVC. Я хочу сначала начать этот проект с создания BASE с модульной архитектурой, я имею в виду пустое приложение, которое содержит основные и общие службы, такие как (управление деревом навигации, активация / деактивация модулей с использованием базы данных, регистратора ...) или любые другие глобальные функционалиты, которые могут появиться позже после детальной концепции. мои модули позже будут в связках.

Я думаю о базовом контроллере, который будет получать все запросы, выполнять все необходимые процедуры, запускать / изменять службы, которые модули будут использовать в зависимости от конфигураций (файлы или БД) и кеша (сеанс / глобальные объекты), а затем вызвать вызываемый контроллер и верните ответ. для этого мне нужно изменить ядро, чтобы оно всегда отправлялось к этому контроллеру и давало действие и контроллер, которые пользователь вызвал к нему.

Я сделал какой-то проект в Symfony, используя только стандартную версию, и это первая попытка сделать внутреннюю настройку, поэтому у меня нет большого опыта. Если кто-то думает, что моя идея плохая, и есть другие предложения, пожалуйста, дайте им плохо, будьте очень хороши!

Изменить: я могу указать, что эта БАЗА - это просто тесты для поиска идеальной модульной архитектуры, поэтому любая другая идея, связанная с модульностью в symfony, будет большой помощью! Благодарность


person user3123258    schedule 04.06.2014    source источник


Ответы (1)


Само ядро ​​к контроллеру отношения не имеет. Этим все занимается ControllerResolver. Если вы всегда хотите обрабатывать каждый входящий запрос с использованием одного и того же контроллера, вы можете создать свой собственный ControllerResolver, чтобы всегда возвращать экземпляр этого контроллера. См. http://symfony.com/doc/current/components/http_kernel/introduction.html#resolve-the-controller для получения дополнительной информации о разрешении контроллера.

Однако я бы рекомендовал не поступать таким образом. Контроллеры должны быть очень жесткими слоями между пользовательской землей и логической землей. Все тяжелые вещи нужно делать на логическом уровне, в сервисах. А если вы используете службы, вам лучше зарегистрировать их в качестве слушателей события kernel.controller, чем вызывать их из контроллера. См. Также http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html

person Wouter J    schedule 08.06.2014
comment
спасибо за ваш ответ, я думаю, что прослушивание событий ядра - лучший способ! - person user3123258; 09.06.2014