Ответы пользователя по тегу Symfony
  • Репозиторий, как правильно организовать однотипные запросы?

    @heartdevil
    плыву как воздушный шарик
    Я не знаю ни laravel ни symfony, но может идейно помогу.
    Кода, скорее всего, будет больше, просто потому что вы все пишете сами. Меньше может стать только если вы что-то там доустановите в симфони и будете пользоваться этой надстройкой. Но идейно, у вас есть уже разделение на репозитории и вам нужен еще один слой бизнес логики. Вы можете и бизнес логику хранить в репозиториях, но тогда вопрос, а зачем вообще нужен этот слой репозиториев, если все можно хранить в контроллерах :). Вообще, репозитории должны быть как можно более общими. Какие-то простые запросы в базу типа, вернуть все или вернуть все у чего id равен чему-то. Такие вещи как флаги или сортировка, тоже можно уже сразу встроить в запросы, но обычно флаги - это уже бизнес логика. Так же как и какая-то кастомная сортировка. Для тких "хитрых" запросов обычно выделяется еще один слой. Бизнес-логика. К примеру, называем его Services и туда пробрасываем нашим репозитории и на основе них уже делаются методы типа GetActiveSoretedFilteredAndSoOnService. Ну и далее сервисы пробрасываются в контроллеры и конроллеры знают только про них. А про контроллеры вы правильно заметили. Такую логику переключений лучше там не держать. Хотя бывает разное. Да и вопрос, а зачем так переключать запросы в контроллере? В чем выгода? Может лучше на каждый пункт меню сделать отдельный метод get в контроллере? Или это специфика symfony? Что все через index надо делать.
    Ответ написан
  • Как правильно сделать с точки зрения ООП и здравого смысла?

    @heartdevil
    плыву как воздушный шарик
    За симофони не скажу, но да. Все примерно так, как вы описали. Внедряете зависимости репозитариев в сервисы, сервисы внедряете в контроллеры и работаете с сервисами в экшенах контроллеров. Разных сервисов может быть куча.
    Ответ написан
    Комментировать
  • В чем практическая польза от такого подхода?

    @heartdevil
    плыву как воздушный шарик
    Привет.

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

    Другое объяснение -- это призма через которую вы смотрите на сущность и видите только то, что позволяет видеть призма.
    Ответ написан
    Комментировать