Laravel Controllers: Concept of Service and Actions

Поділитися
Вставка
  • Опубліковано 11 вер 2024

КОМЕНТАРІ • 30

  • @alexanderk8992
    @alexanderk8992 2 роки тому +14

    1. В экшен из контроллера лучше передавать дто, а не массив. Поскольку такой подход более типизирован. Ну и идэешке проще будет подсветить то, что есть в дто. А массив - это черный ящик по сути.
    2. Сервисы тоже должны отвечать за одну ответственность. Вот экшен также выступает в роли контроллера (в рамках грасп, а не эмвиси) и распределяет выполнение сервисов. Вижу код многих чуваков, которые в сервис пихают все, что можно, то есть сервис состоит из разных методов, связанных только одной моделью. это крайне не правильно. с точки зрения того же срп. Если логика экшена сложнее простого сохранения юзера, то, например, должны быть сервисы (отдельные классы) обработки данных юзера перед сохранением, само сохранение, логирование результатов операции и т.д.

    • @CutCodeRu
      @CutCodeRu  2 роки тому +5

      1) Почему бы и нет
      2) Совершенно верно)

    • @user-uy7sc8sf5o
      @user-uy7sc8sf5o 2 роки тому +5

      @@CutCodeRu
      2) Не совсем пойму разницу actions и services тогда. Если services также должны отчечать за одну отвественность. В чем его отличие от actions?

    • @RusIvan2022
      @RusIvan2022 Рік тому +2

      @@user-uy7sc8sf5o Контроллер только принимает запрос и отдает вью. Экшин выполняет роль контроллера если бы он был раздутый. Ну и сервисы в них бизнеслогика. Я так понимаю

    • @androidiosgameplay-anrad7256
      @androidiosgameplay-anrad7256 Рік тому +1

      Те кто не понял сервис должен следовать единственной ответственности, но это не значит, что в нем должен быть один метод. Их может быть сколько угодно. Главное не нарушать принцип SOLID.

    • @alexanderk8992
      @alexanderk8992 Рік тому

      @@androidiosgameplay-anrad7256 думаю, вам/тебе следует перечитать про срп и мой коммент, в котором нет упоминания того, что класс должен содержать один метод.

  • @user-rz4uf7yp7b
    @user-rz4uf7yp7b 2 роки тому +2

    👏👏👏спасибо

  • @TheRedesc
    @TheRedesc 2 роки тому +2

    Расскажи не про чистый код, А что делать ,когда приходишь на проект, а там контроллеры по 2000 строк, в которых модели в массивах сортируются, и связные данные так же массивами цепляются? Хочется чтобы все по классам было разложено, но фиг. И на рефактор времени не выделяют. А ещё неизвестно как это все работает, потому что из вьюх тоже запросы в базу есть. И рефактор контроллера фронт затрагивает, а во фронте ещё одна вьюха с 5000 строками и непонятным джаваскриптом в который значения переменных из пхп печатаются...

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

      Все печально одним словом, но если на рефакторинг времени не выделяют то ответ никак)

    • @ВикторПотоцкий-и8ы
      @ВикторПотоцкий-и8ы 2 роки тому +6

      Повышать стоимость поддержки. Ежемесячно x1.28
      Аргументируя состоянием системы - говнокод. Тогда заказчик быстрее смекнёт, что рефактор - очень полезная штука, которая бабки экономит

  • @extrememod2734
    @extrememod2734 2 роки тому +2

    В чем разница сервиса и экшена? Когда какой использовать?

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

      Разные концепции, какой больше нравится в зависимости от ситуации, группа методов либо один, подход выбираете сами

  • @stok_uz
    @stok_uz Рік тому

    Я делаю так если код меняет состояние апп то он уходить в акшоны а если код просто считывает данные например из бд или выполняет какую операцию чтобы получить другой результат например сортирует, умножает …. То этот код уходит в сервис и не обязательно сервисов группировать по название модели

  • @ddrdeveloper
    @ddrdeveloper 2 роки тому +1

    Ну про Jobs я понял, что это очереди или queues, а что за Actions? где такое в документации?

    • @CutCodeRu
      @CutCodeRu  2 роки тому

      добрый день! приглашаю в наш чат t.me/laravel_chat, там на вопросы отвечаем быстрее

  • @user-wu3ns6lj4u
    @user-wu3ns6lj4u Рік тому +1

    Можно ли в Actions использовать метод __invoke?

  • @ivan.silicin
    @ivan.silicin 2 роки тому +1

    Вопрос. Чем данный метод сервисов и экшенов лучше размещения логики в самой модели?
    Ведь по сути как мне кажется лучше ж не создавать дополнительный сервис, а сразу вызвать метод из модели, разве нет?

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

      Все зависит от ситуации, нельзя просто взять концепцию и использовать ее всюду! Как правило экшн контроллера выходит логикой за одну модель да и модель делать жирной не лучшая идея, думаю вы поняли о чем я в целом

  • @trvtrv3172
    @trvtrv3172 Рік тому +1

    хыхы я сервисы использовал, а про екшены не слышал