Еще добавлю, паттерн декоратор работает с композицией, а не с наследованием. При паттерне декоратор, можно в теории делать сколько угодно слоев декорирования, в этом его смысл. Например вы захотите сделать еще один декоратор, вы будете что декорировать наследованием? LogCreateUser или CreateUser?
Декораторы выглядят так:
Хорошая, простая и понятная статья. По сути вы пришли к паттерну команда и архитетуре CQRS. Последнее время чем чаще думаю об архитетуре, тем больше приходит идей переходить на команды.
Нужно сделать декоратор? Проще сделать с командой, так как не нужно будет 100500 методов заглушек, если бы делали декоратор для большого сервиса и его одного метода.
Нужно выполнить очередь (или перевести какой то фунцкионал на нее) — команда как раз для этого отлично подходит.
Единственное но — это больше кода, а если проект небольшой, то плюсы которые выходят в статье — просто могут не понадобиться в небольшом проекте.
1. Дефолтная локаль без подпапки — настройка такая есть. hideDefaultLocaleInURL
2. Проверил свой проект — у меня возвращает 404 для несуществующей локали. Да и логика этой строчки другая. В данной строке вообще нет проверки на разрешенную/нет локаль. Плюс getForcedLocale берет локаль из env, что вообще в документации поверхностной нет. Т.е это некая дополнительная логика.
Декораторы выглядят так:
SendEmailCreateUser(new StatCreateUser(new LogCreateUser(new CreateUser())))
Нужно сделать декоратор? Проще сделать с командой, так как не нужно будет 100500 методов заглушек, если бы делали декоратор для большого сервиса и его одного метода.
Нужно выполнить очередь (или перевести какой то фунцкионал на нее) — команда как раз для этого отлично подходит.
Единственное но — это больше кода, а если проект небольшой, то плюсы которые выходят в статье — просто могут не понадобиться в небольшом проекте.
Неплохой доклад на тему CQRS, как раз с разбором нарастающих проблем.
www.youtube.com/watch?v=mvIXCgwGf9E
2. Проверил свой проект — у меня возвращает 404 для несуществующей локали. Да и логика этой строчки другая. В данной строке вообще нет проверки на разрешенную/нет локаль. Плюс getForcedLocale берет локаль из env, что вообще в документации поверхностной нет. Т.е это некая дополнительная логика.
github.com/mcamara/laravel-localization#translated-routes