Где граница бизнес-логики в контроллере?

118
04 мая 2021, 04:50

Разъясните, пожалуйста, что является бизнес логикой приложения и где ее границы с контроллером? Какой вариант более правильный и почему: delete или deleteV2 ?

class ArticleController
{
    public function delete(int $articleId, ArticleService $service)
    {
        $article = $service->deleteById($articleId);
        $service->deleteImage($articleId);
        $service->deleteCache($articleId);
    }
    public function deleteV2(int $articleId, ArticleService $service)
    {
        $article = $service->deleteV2($articleId);
    }
}
class ArticleService
{
    public function delete(int $articleId)
    {
        $article = $repository->find($articleId);
        $repository->delete($article);
    }
    public function deleteV2(int $articleId)
    {
        $this->delete($articleId);
        $this->deleteImage($articleId);
        $this->deleteCache($articleId);
    }
    public function deleteImage(int $articleId)
    {
        //удаление изображения
    }
    public function deleteCache(int $articleId)
    {
        //удаление кэша
    }
}
Answer 1
  1. Контроллеры это уровень взаимодействия с пользователем(получение запроса) там бизнес логики быть не должно. На уровне сервиса бизнес логика может присутствовать.

  2. Не так важно где у вас бизнес логика, важнее, что она должна быть вы одном месте. "Если вы не найдете место бизнес логике - она найдет его сама".

Второй вариант правильнее.

READ ALSO
Получить данные из `$_SERVER` без спецсимволов

Получить данные из `$_SERVER` без спецсимволов

В адресной строке: /computerzubehör-/, но через $_SERVER['REQUEST_URI'] получаем /computerzubeh%C3%B6r-/Как получить строку как есть, без замены спецсимволами?

119
Как обновить url после переноса сайта, wordpress

Как обновить url после переноса сайта, wordpress

Перенёс сайт на другой домен, и некоторые ссылки на изображения остались со старого сайтаВ phpmyadmin делал замену всех ссылок в таблицах wp_posts,...

96
php и неактивированный mbstring

php и неактивированный mbstring

Установил phmyadminПосле установки он мне выдал: The mbstring extension is missing

121
Разделить значение из строки php

Разделить значение из строки php

Подскажите пожалуйста, есть такой код:

125