мой блог на гитхабе:zgxxx.github.io/
Проекту компании может потребоваться перестроить структуру.Босс дал мне видео, чтобы я мог изучить идеи внутри.Посмотрев его, я чувствую, что многому научился.У спикера очень четкое понимание всех уровней laravel проекта и стремится к достижению единой и четкой ответственности. Ниже приводится общее расположение содержания видео после его просмотра, а также некоторые мои собственные мнения, пожалуйста, указывайте на ошибки. видео:Woohoo.YouTube.com/watch?V=Pacing Y…(Там стена, все понимают)
Простая архитектура Laravel:
Простые небольшие проекты могут передавать запросы к базе данных, бизнес-логику и данные в представление, и почти все операции размещаются на контроллере.Если спрос на более поздние проекты станет больше, контроллер в конечном итоге станет раздутым, трудным для понимания и трудным для понимания. поддерживать (аналогично, некоторые будут Записывать все добавления, удаления, изменения и запросы, писать функциональные классы в Модели, а затем брать Контроллер из Модели один за другим, что приводит к беспорядочной Модели. Когда Модель имеет связанную таблицу, это может вызвать некоторые ненужные запросы к базе данных)
Мое собственное понимание: используйте Meiyijia для продажи продуктов покупателям, чтобы понять, что основным контроллером является франчайзинговый магазин Meiyijia, View — это клиент, а Model — фабрика по производству продукта (понимание немного грубое)
Репозиторий:
Связанные с операциями Eloquent/DB, такими как добавление, удаление, изменение и проверка, основные операции, непосредственно связанные с базой данных, извлекаются и помещаются в репозиторий. Репозиторий — это хранилище на китайском языке. Насколько я понимаю, нам нужно получить данные из модели и сначала поместите ее в репозиторий склада.Унифицированное распределение по управлению складом, чтобы играть обязанности склада
Служба (Платформа службы штаб-квартиры):
Бизнес-логика — это не просто запрос данных, а конкретные задачи, такие как оценка того, является ли пользователь членом, установка прав пользователя и т. д. Эти операции рекомендуется размещать в Сервисе, а затем Контроллер будет вызывать его.
**Личное понимание: **Таким образом, между контроллером и моделью/красноречивым есть два уровня.Если репозиторий понимается как товарный склад, я понимаю, что сервис — это сервисная платформа, похожая на штаб-квартиру.Контролер франшизы должен взять товар на гостевой Вид, которого нельзя Перейдите непосредственно на пищевую фабрику Модель, чтобы получить ее, сначала пройдите через склад-репозиторий, затем штаб-квартиру сервисной платформы Сервис по упаковке, сортировке и отправке (различные задачи) и, наконец, к Контролеру франчайзи .
Ведущий (сервис пополнения):
Некоторые из них относительно фиксированы и могут быть вызваны отдельно. Вы можете использовать Presenter для их извлечения. Вам не нужно позволять модели делать это. В следующий раз, когда вы ее изменяете, вы можете изменить Presenter отдельно. Например, метка времени преобразуется в формат Y-m-d H:i:s, который можно обрабатывать только с помощью Presenter и вставлять во внешний шаблон с помощью @inject вместо того, чтобы записывать процесс преобразования в шаблон.
Трансформер (ручной просеивание закусок быстрого приготовления):
Converter, например, есть действие запроса, которое получает всю информацию о пользователе в хранилище репозитория:this->user->all(['name','email'])?
Таким образом все поля обязательны в других местах.Это не конфликт? В этот раз пригодится Transformer, по сути, принцип заключается в том, чтобы фильтровать данные, полученные $this->user->all(), а затем выводить их, добавляя фильтр.
Форматтер (обертка):
В основном используется для обеспечения согласованности формата возврата API (метод использования аналогичен преобразованию):