Size: a a a

2021 January 24

DD

Dima Denisov in symfony
Турникет А большую пропустит, маленькую - нет. Турникет Б - пятнистую пропустит, не пятнистую - нет
источник

DD

Dima Denisov in symfony
Любой объект имеет конечное кол-во свойств.
источник

D

Dmitry in symfony
Т.е вы предлагаете турникету знать о всех свойствах всех объектов ? Правильно понял ?
источник

DD

Dima Denisov in symfony
Набот этих свойтсв определяет уникальность данного типа чемоданов/тележек.
источник

DD

Dima Denisov in symfony
Турникету не нужны все свойства, а только те которые определяют allow/denied
источник

D

Dmitry in symfony
Ага. У кошки это цвет. У самолета это размер. У единорога это рог.
источник

D

Dmitry in symfony
Т.е ваш вариант это вариант 1 из моего вопроса?
источник

DD

Dima Denisov in symfony
Мое мнение - варинат 1. У себя делал бы так. Через Voters все бы решилось на раз-два
источник

D

Dmitry in symfony
Ну вот вотеры пропагандируют вариант 1.
источник

D

Dmitry in symfony
Но сдаётся мне тут нарушается инкапсуляция данных объекта.
источник

C

CvekCoder in symfony
1. Турникет умеет открываться и закрываться. Этого достаточно.
2. Кошка и прочие умеют подходить к турникету и запускать процесс пропуска. Если открылся - умеют проходить.
3. После инициации процесса, некий "менеджер турникета" начинает по очереди обходить все существующие правила и спрашивать у каждого "умеешь валидировать объект X?"
4. Если валидатор нашелся, то передаешь ему объект и он (валидатор), возвращает менеджеру решение - пропускать или нет.
5. Менеджер открывает турникет или нет
источник

C

CvekCoder in symfony
Каждое правило - отдельный класс интерфейса "TurnuketValidatorIntefrace"
источник

C

CvekCoder in symfony
Правила загружаются в менеджера через DI. Например через tagged_iterator
источник

C

CvekCoder in symfony
Так каждый будет делать то, что ему положено и никто не знает всю систему разом
источник

DD

Dima Denisov in symfony
Осталось должаться человека которые предложит еще и вариант 2 - и можно считать что воскресный разговор прошел в тихой дружеской обстановке
источник

D

Dmitry in symfony
CvekCoder
Так каждый будет делать то, что ему положено и никто не знает всю систему разом
Т.е вы за 3-й?
источник

C

CvekCoder in symfony
Нет. У вас там написано, что есть тот, кто всё про всех знает. Мой менеджер ничего ни про кого не знает, он делегирует валидацию другим. Это разное
источник

C

CvekCoder in symfony
Он только открывает турникет. А решение делегируется валидаторам
источник

D

Dmitry in symfony
Валидатор будет знать про сам объект и для чего валидировать т.е турникет
источник

C

CvekCoder in symfony
Open-close принцип соблюден
источник