Size: a a a

2021 January 24

D

Dmitry in symfony
Вы переходите на техническую реализацию. Давайте останемся в поле теории
источник

C

CvekCoder in symfony
Каждый валидатор умеет валидировать только свой тип. Для кошки, для человека и т.д. - для каждого будет свой валидатор
источник

D

Dmitry in symfony
Ваш валидатор относится к кому ? Объекту или турникету ?
источник

D

Dmitry in symfony
Или он знает и о том и том и просто принимает решение ?
источник

C

CvekCoder in symfony
Dmitry
Валидатор будет знать про сам объект и для чего валидировать т.е турникет
К объекту. Ему передают объект и он по только ему известным правилам принимает решение - годный или нет. Турникет будет открывать менеджер.
Похоже на voter в симфони, да
источник

C

CvekCoder in symfony
Менеджер может реализовывать разные стратегии - например консенсуса
источник

D

Dmitry in symfony
Годный для чего ? Ну вот есть валидатор. Он же должен знать для чего он валидирует. Значит знает о турникете
источник

A

AlexS in symfony
турникеты бывают разные. есть те, что в общагах стоят, есть те, что на границах стран фуры пропускают. турникет для фур неприменим для людей, турникет для людей не понимает что делать с фурой. количество объектов в системе может быть +/- бесконечным, а турникет применим к конечному числу типов, потому через какую-то систему воутеров или еще каких-то штук он сам должен понимать применим ли он к тому типу, что перед ним.

плюс турникет же обычно не сам в себе, а как какой-то секурити-слой для доступа куда-то. вот пусть система безопасности и понимает с кем она работает.
источник

D

Dmitry in symfony
AlexS
турникеты бывают разные. есть те, что в общагах стоят, есть те, что на границах стран фуры пропускают. турникет для фур неприменим для людей, турникет для людей не понимает что делать с фурой. количество объектов в системе может быть +/- бесконечным, а турникет применим к конечному числу типов, потому через какую-то систему воутеров или еще каких-то штук он сам должен понимать применим ли он к тому типу, что перед ним.

плюс турникет же обычно не сам в себе, а как какой-то секурити-слой для доступа куда-то. вот пусть система безопасности и понимает с кем она работает.
Я не понял за какой вы вариант
источник

C

CvekCoder in symfony
Dmitry
Годный для чего ? Ну вот есть валидатор. Он же должен знать для чего он валидирует. Значит знает о турникете
С объектом "турникет" он никак не взаимодействует. Но он же валидатор турникета, поэтому в это смысле он понимает для чего его попросили принять решение
источник

D

Dmitry in symfony
CvekCoder
С объектом "турникет" он никак не взаимодействует. Но он же валидатор турникета, поэтому в это смысле он понимает для чего его попросили принять решение
А как он узнаёт что этому конкретному турникету можно пропускать ?
источник

A

AlexS in symfony
Dmitry
Я не понял за какой вы вариант
за тот, что турникет либо понимает кто перед ним и пропускает/не пропускает, либо не понимает и никак не взаимодействует
источник

D

Dmitry in symfony
AlexS
за тот, что турникет либо понимает кто перед ним и пропускает/не пропускает, либо не понимает и никак не взаимодействует
Т.е вариант 1. Спасибо
источник

C

CvekCoder in symfony
Dmitry
А как он узнаёт что этому конкретному турникету можно пропускать ?
Если для принятия решения ему нужно состояние турникета, то можно передать ему это состояние (контекст принятия решения)
источник

D

Dmitry in symfony
CvekCoder
Если для принятия решения ему нужно состояние турникета, то можно передать ему это состояние (контекст принятия решения)
Таким образом ваш вариант 3. Некий медиатор в виде вашего валидатор знает объект и турникет. И принимает решение
источник

C

CvekCoder in symfony
Скорее состояние турникета - обычно весь турникет передавать избыточно. Но это уже детали реализации, да
источник

C

CvekCoder in symfony
Система voter'ов так построена. Наверное этот паттерн даже как-то называется)
источник

C

CvekCoder in symfony
И нормализаторы в сериализаторе
источник

D

Dmitry in symfony
Благодарю за мнение.
источник

A

Anthony in symfony
Эм. Дык это же voters
источник