Создать красивую архитектуру Laravel с удобством обслуживания и гибким дизайном

задняя часть база данных Архитектура Laravel

мой блог на гитхабе:zgxxx.github.io/

Проекту компании может потребоваться перестроить структуру.Босс дал мне видео, чтобы я мог изучить идеи внутри.Посмотрев его, я чувствую, что многому научился.У спикера очень четкое понимание всех уровней laravel проекта и стремится к достижению единой и четкой ответственности. Ниже приводится общее расположение содержания видео после его просмотра, а также некоторые мои собственные мнения, пожалуйста, указывайте на ошибки. видео:Woohoo.YouTube.com/watch?V=Pacing Y…(Там стена, все понимают)

Простая архитектура Laravel:

avarar

Простые небольшие проекты могут передавать запросы к базе данных, бизнес-логику и данные в представление, и почти все операции размещаются на контроллере.Если спрос на более поздние проекты станет больше, контроллер в конечном итоге станет раздутым, трудным для понимания и трудным для понимания. поддерживать (аналогично, некоторые будут Записывать все добавления, удаления, изменения и запросы, писать функциональные классы в Модели, а затем брать Контроллер из Модели один за другим, что приводит к беспорядочной Модели. Когда Модель имеет связанную таблицу, это может вызвать некоторые ненужные запросы к базе данных)

Мое собственное понимание: используйте Meiyijia для продажи продуктов покупателям, чтобы понять, что основным контроллером является франчайзинговый магазин Meiyijia, View — это клиент, а Model — фабрика по производству продукта (понимание немного грубое)

Репозиторий:

Связанные с операциями Eloquent/DB, такими как добавление, удаление, изменение и проверка, основные операции, непосредственно связанные с базой данных, извлекаются и помещаются в репозиторий. Репозиторий — это хранилище на китайском языке. Насколько я понимаю, нам нужно получить данные из модели и сначала поместите ее в репозиторий склада.Унифицированное распределение по управлению складом, чтобы играть обязанности склада

avarar
avarar

Служба (Платформа службы штаб-квартиры):

Бизнес-логика — это не просто запрос данных, а конкретные задачи, такие как оценка того, является ли пользователь членом, установка прав пользователя и т. д. Эти операции рекомендуется размещать в Сервисе, а затем Контроллер будет вызывать его.

avarar
avarar

**Личное понимание: **Таким образом, между контроллером и моделью/красноречивым есть два уровня.Если репозиторий понимается как товарный склад, я понимаю, что сервис — это сервисная платформа, похожая на штаб-квартиру.Контролер франшизы должен взять товар на гостевой Вид, которого нельзя Перейдите непосредственно на пищевую фабрику Модель, чтобы получить ее, сначала пройдите через склад-репозиторий, затем штаб-квартиру сервисной платформы Сервис по упаковке, сортировке и отправке (различные задачи) и, наконец, к Контролеру франчайзи .

avarar

Ведущий (сервис пополнения):

Некоторые из них относительно фиксированы и могут быть вызваны отдельно. Вы можете использовать Presenter для их извлечения. Вам не нужно позволять модели делать это. В следующий раз, когда вы ее изменяете, вы можете изменить Presenter отдельно. Например, метка времени преобразуется в формат Y-m-d H:i:s, который можно обрабатывать только с помощью Presenter и вставлять во внешний шаблон с помощью @inject вместо того, чтобы записывать процесс преобразования в шаблон.

avarar
avarar
avarar
** Личное понимание: ** Таким образом, между контроллером и просмотром можно добавить слой докладчика. Мое понимание несколько похоже: продавцы Meiyijia (контроллер) могут взимать плату за проезд по автобусным картам для гостей (просмотр), и этот тривиальный вопрос не требует затраты на оплату труда (Модель)
avarar

Трансформер (ручной просеивание закусок быстрого приготовления):

Converter, например, есть действие запроса, которое получает всю информацию о пользователе в хранилище репозитория:this->user->all(); 但有些地方我们不需要用到那么多个字段,我只想有name和email字段,难道我要去改all()里面的参数,变成this->user->all(['name','email'])? Таким образом все поля обязательны в других местах.Это не конфликт? В этот раз пригодится Transformer, по сути, принцип заключается в том, чтобы фильтровать данные, полученные $this->user->all(), а затем выводить их, добавляя фильтр.

avarar
avarar
avarar
После этого вы можете изменить поле результата прямо в преобразовании, а также добавить необходимые поля: array_set()
avarar
**Личное понимание: **Мое понимание состоит в том, что некоторым клиентам необходимо заказать фаст-фуд, например, лапшу и колбасу в Мэйицзя. При продаже продуктов закуски должны быть проверены в соответствии с потребностями клиентов. Если вы продаете это опять же,нельзя у покупателя просить колбасу.Вы ему все вкусняшки в магазине отдаете и пусть он сам просеивает.При продаже в середине Трансформер нужно просеивать и тогда товар отдадут .
avarar

Форматтер (обертка):

В основном используется для обеспечения согласованности формата возврата API (метод использования аналогичен преобразованию):

avarar
avarar
avarar
Личное понимание: Мое понимание Formatter - это упаковка товаров. Когда клиенты покупают что-то или закуски, вам нужно сначала упаковать товары. Конечно, упаковка должна быть последовательной.
avarar
Вышеизложенное мое резюме после просмотра видео.Конечно, теория легко сказать, но в реальной эксплуатации есть еще много неизвестных проблем, и мне нужно продолжать учиться и учиться позже.