не особо мне нравится тема модульности. Не такой уж у вас и большой проект.
ну во первых magazine предлагаю переименовать все же в blog, по контексту больше подходит. ну и не будет смущать в будущем у менее англо-понимающих разрабов )
я бы предложил использовать слой сервисную архитектуру.
Делается сервис, например, common\services\blog\Post.php
в этом классе все методы для работы с постами. на ум приходят пока только store/update/destroy/findOne/findAll
в админке, где вам потребуется работать с постами, вы будете работать лишь с 1 этим сервисом.
а именно, в конструктор контроллера, отвечающего за работу с постами, указываем
__constructor(...., PostService $postService, ...)
{
...
$this->postService = $postService
а в методе store контроллера, для создания поста достаточно лишь будет
$createdPost = $this->postService->store($arrayData)
и работаете дальше.
по итогу,
- в контроллере вы лишь принимаете данные от пользователя
- валидируете
- если все ок, то отдаете данные в сервис. там вся магия инкапсулируется
- что либо делаете на основании создан или не создан пост
ни в коем случае не пихайте ниакой более логики в контроллеры или в модели. только в сервисах.
если в сервисном методе возникает какая либо ошибка , выбрасываете исключение и обрабатываете ее в контроллере.