Я программист Java, который пытается исследовать CakePHP - в настоящее время у меня проблема с структурой/дизайном приложения. Я не мог понять, где поставить основную логику приложения.
Когда я разрабатываю JavaEE, общий подход выглядит следующим образом:
-
Модели классов просты beans, которые представляют собой сущности данных (продукты, люди и т.д.) - в основном, как структуры данных с геттерами/сеттерами;
-
Классы контроллера - достаточно простые классы, которые собирают необходимые данные и вводят их в выделенный шаблон просмотра, который затем отправляется пользователю;
-
Классы DAO (DataAccessObject) или Repository - это те, которые могут загружать и хранить объекты в базе данных;
-
Сервисные классы обычно представляют собой синглеты, которые содержат определенные бизнес-логические методы - они вызывается контроллерами, другими службами или запланированными действиями, с другой стороны, они сами называют методы DAO/Repository для извлечения или изменения данных.
Например, если у меня есть сущности Person
, Product
и Order
, когда пользователь выбирает какой-либо продукт и клики "помещают его в корзину/корзину" new Order
для этого Person
должны быть созданы, и это Product
следует добавить к этому Order
(мы можем проверить, что Person
не является плохим должником и что Product
присутствует в магазине и т.д.) - вся эта работа выполняется в методах OrderService
, вызываемых некоторыми контроллер.
Обычно используется некоторый тип IOC (инверсия управления), так что все службы и контроллеры имеют ссылки на необходимые службы и т.д.
Теперь я немного озадачен тем, как все это делается в CakePHP. Где я должен поставить эту бизнес-логику и т.д.?