В настоящее время мы разрабатываем сайт электронной коммерции. У нас есть открытый и административный модуль.Как предотвратить дублирование кода
Иногда мы предлагаем такую же функциональность в обоих модулях, как просмотр продуктов или создание заказов. Но есть также некоторые функции, которые присутствуют в публичном или административном режиме, например, при добавлении продуктов (которые находятся в админке).
Наша проблема заключается в том, что общие функции приводят к дублированию логики. Нам нужно реализовать его в обоих модулях.
Одним из способов решения проблемы является использование слоев. Итак, что мы сделали, это переместить общую логику в Модель. Однако, контроллер продолжает дублирующие коды так, как показано ниже:
public function invoice() {
$this->Invoice->create();
$this->Invoice->setCustomer($this->getCurrentUser);
$invoice_items = // get list of items from post
$this->Invoice->setItems($invoice_items);
$this->Invoice->save();
}
Мой вопрос, разумно создать WebService, который будет инкапсулировать эту логику, и вы просто должны вызвать его от администратора и общественных модулей ..
Как Magento реализует публичные и административные панели. И как он управляет своей логикой.