нельзя нормально определить метода класса?
Не новая
тем лучше. а зачем?
"How to Define Controllers as Services (Symfony Docs)" https://symfony.com/doc/current/controller/service.html#invokable-controllers
жесть. а написать вот так, видимо, Заратустра не позволяет class Hello { /** * @Route("/hello/{name}", name="hello") */ public function hello($name = 'World') { return new Response(sprintf('Hello %s!', $name)); } }
RegisterController function register Зачем?
для простоты
А __invoke – сильно сложно?
да. только запутывает, если у тебя пару сотен контроллеров в проекте
Yaml конфиги роутинга не упрощаются так
По опыту, запутывает как раз искать нужный экшен, видя лишь кучу контроллеров. Плюс каждый экшен - это +1 причина для изменений, а значит плюс причина для мерж конфликтов и прочего. Поэтому Invokable actions - топ для хттп. Классические контроллеры - это вообще устаревшая отрыжка MVC. Еще можно погуглить ADR, откуда это все пошло.
у меня никогда не было проблем с поиском нужного экшена по роуту. Farmanager отлично справляется с поиском в файлах Каждый контроллер содержит, как правило несколько экшенов. как минимум, для обработки post,put, get-запросов
Ну если бложики всякие клепать, то любой вариант будет норм)
какая разница, что клепать? для PHP нет различия, что ты клепаешь
Если пишется рест апи, то писать для каждого запроса свой класс не очень хорошо, это может привести к конфликтам в роутах. Гораздо безопаснее будет если на каждую энтитю свой контроллер
да grep. в моём случае FarManager - это мой греп
ну или midnight commander. Каждому свое
Роуты маппятся на экшены, какие здесь могут быть конфликты? Для круда есть апи платформ и аналоги, если оч хочется много круда.
Например - user/{id}, user/some-random-action
Если роуты описаны как аннотации рядом с экшенами - это еще будет как-то полезно. Но по большей части, если для поиска экшена нужно что-то грепать, значит что-то при организации структуры наших папочек пошло не так.
грепать нужно, как правило, если ты не помнишь точно, что где находится.
Ну тут дело не в экшенах, а в том, как у тебя роуты прописаны. Обычно имеет смысл разделять рестовый круд от условного рпц
делаем {id}/user и наслаждаемся
Обсуждают сегодня