Когда использовать шаблоны команд / событий / репозиториев в приложениях MVC Pattern / Laravel?

У меня небольшая проблема с пониманием всей команды (сейчас Иов) | Событие | Шаблоны кодирования репозитория в приложениях MVC, особенно в Laravel.
Я понимаю основы каждого из них. Что я не понимаю, так это когда нужно знать и быть уверенным, что мы должны использовать каждый из них.
Я знаю, что нет никакого способа убедиться, к какому из этих шаблонов относится наша обработка задач, и это во многом зависит от работы разработчика.выделенный текстНо я был бы признателен, если бы кто-то смог прояснить для меня эти понятия немного больше.

Скажем, мы хотим сохранить книгу в нашем приложении. Что я обычно делаю, это создаю Route> Controller> Repository> Model и делю работу между ними так, как это наиболее целесообразно.
В этой модели мы можем использовать Eventing таким же образом, как и запуск события, когда мы закончили сохранение элемента (Book), и прослушать его где-нибудь еще в программе, чтобы мы могли добавить его в таблицу уведомлений нашей базы данных, которая будет оповещать админ / пользователь / …

Теперь я не уверен, что это «А» правильный способ решения таких вопросов, но, что мне больше всего интересно узнать, так это:

«Должен ли я использовать команду для сохранения элемента или я могу просто передать информацию прямо из контроллера в репозиторий и сохранить ее там?
Какой путь наиболее соответствует шаблонам?

И, наконец, можете ли вы привести примеры использования команд в таких приложениях?

Заранее спасибо,
Я ценю ваше время и терпение.

0

Решение

Команды используются для выполнения задач из командной строки — это может быть полезно из задания cron или из инструментов, например, в качестве супервизора. Я часто использую их для задач администратора, для которых я не хочу предоставлять пользовательский интерфейс (на тот момент). REal life example: команда, используемая в задании cron для импорта данных из стороннего программного обеспечения, такого как SAP / SAS.

События: программирование на основе событий — это еще один способ отделить части приложения. Одна часть приложения запускает событие, а другая часть прослушивает его и выполняет что-то. Вы можете найти это очень элегантным или более сложным для отладки. Если вы все еще боретесь с базовыми концепциями инфраструктуры MVC, я рекомендую на данный момент пропустить этот подход.

Что касается «разделения кода между контроллером, хранилищем и моделью», это зависит от вашего личного вкуса и, возможно, размера приложения. Для небольших приложений я бы просто сохранил книгу в контроллере. 10 минут. Готово. Для более крупного приложения я бы создал класс обслуживания и вызвал бы этот класс обслуживания из контроллера. Класс обслуживания использует класс репозитория, который использует модель, поэтому контроллер очень маленький и не содержит много «ценного кода». Мне нравится следовать этой статье:

http://dfg.gd/blog/decoupling-your-code-in-laravel-using-repositiories-and-services

Но я знаю многих разработчиков, которые не следуют этому подходу. 😉

1

Другие решения

Других решений пока нет …