Добрый день, пишу проект на yii2. в нем используется паттерн MVC.
сейчас задаюсь вопросом:
что лучше делать, цепочку обязанностей из обработчиков действий (паттерн такой). Или просто перенаправлять запрос обычным редиректом на какой либо Экшен. Как это согласуется с ООП?
Что лучше, ходить пешком или кеды? Как это согласуется с КПСС?
Вопрос бессмысленный.
Если нужен редирект, то надо делать редирект.
Если редирект не нужен, то не делать.
К ООП все эти страдания не имеют никакого отношения.
Евгений Самсонов, глупости какие то говорите, не вчитавшись в вопрос.
Что делает цепочка обязанностей? -по сути разбивает алгоритм с множеством условий на части.
Что я спросил? как лучше разбить алгоритм посредством редиректов, на каждый экшен своя часть, или посредством цепочки обязанностей?
когда я говорю по сути - это не значит что я не понимаю смысла цепочки обязанностей, но одна из задач этого паттерна заключается именно в этом.
vitaly_74, А какая конкретно задача? Если я правильно понял, то редиректы для подобного вообще не используют. Без описание того, что вам нужно сделать, невозможно сказать, какой паттерн применить и вообще стоит ли их применять
Евгений Самсонов, скажем так, задача глобальная: расширяем код, не трогая старые объекты и при этом придерживаемся ООП.
Проблему цепочки обязанностей вижу в том, что там классы, цепочки, т.е. классы обработчики - не есть объекты, а только как часть алгоритма (или я не прав, пожалуйста укажите).
проблема редиректов в самих редиректах. и все (насколько я вижу), хапрос можно переадресовывать на новый экшен если это не обходимо и пр.
Однако и там и там алгоритм и его работу можно расширять, следуя тому же СОЛИДу. но меня более всего смщает что в цепочке обязанностей, сами обработчики не есть полноценные объекты (или все таки это полноценные объекты?). помогите разобраться если это возможно.
Евгений Самсонов, я понимаю что есть наследие и другие штуки. но необходимо все таки дополнять алгоритм "одного запроса" придерживаясь ООП и не трогая старый код, от слова совсем.
Он на самом деле связан. Просто таки прямая связь. Самая непосредственная.
Ты старательно экономишь несуществующие миллисекунды на кавычках, думая что оптимизируешь свое похапе.
Но при этом не задумываясь готов увеличить время обработки каждого запроса в 3-5 раз, просто потому что тебе лень учить ооп. И вот так у вас всё. вроде бы занимаетесь программированием, но логика в рассуждениях - на самом последнем месте. После лени, суеверий, и неясных мечтаний.
В чистом виде мидлвар как в ларавеле тут нет, нужно использовать продуманный роутинг, behaviors, хуки контроллера или глобальные компоненты (все зависит от задачи)
Daria Motorina, ну по сути да, но мне всегда казалось, что мидлвар нужен для проверки аутентификации и прочих штук связанных с безопасностю, непосредственно перед выполнением основного кода.