Pull to refresh

Comments 10

Для 1С-Битрикс: Управление сайтом тоже будет доступно?

Да, потому что функционал находится в модуле main

А зачем заниматься собственным велосипедом, если можно было взять симфонийский валидатор и адаптировать?

А чем Битрикс хуже чем Yii или Laravel? Тоже хочется велосипед :)

Чем хуже конкретно данный валидатор?

Да дофига чем:

  1. Атрибуты, которые семантически должны представлять из себя классы метадаты отвечают ещё за валидацию. Смешение логики и правил маппингов.

  2. В примерах кода не вижу вообще возможностей вынести правила валидации отдельно от DTO, например в yaml, php, json, etc. Чтобы правила можно было указывать во внешних файлах и изолировать от DTO.

  3. Не вижу зависимых правил и сложных выражений, типа When X then (Y or Z). И даже реализовать подобное невозможно, кажется, учитывая то что в правила валидации приходит значение только одного поля.

  4. Способа внедрить в конструктор в валидаторы тоже не вижу, т.к. см. п.1. Ну типа есть, например, сервис, предоставляющий анализ текста на "мат", как его всунуть в валидатор, чтоб сказать: #[DoesNotContainSwearWords(criteria: 0.2)], который уже делегируется нужному валидатору, который содержит инфу и локализации, и нужные коннекты к сервису и прочее.

  5. Контекста и прочей инфы тоже нет, т.к. см. п.1

  6. А в виде пакета как это поставить и посмотреть? Ну вот я хочу использовать у себя этот пакет отдельно в проекте, например...

Могу ещё накидать чем это хуже)

Ну т.е. если сравнивать с типичным кодом Битрикса, то это огромный шаг вперёд и выглядит на первый взгляд даже годно. Тут можно только поздравить, что у разработчиков наконец удалось написать код, от которого не хочется сразу вырвать себе глаза. Но это касается исключительно неймспейса Bitrix\Main\Validation\Xxx...

А если же сравнивать с тем же Symfony, то, например у меня, сразу возникает такой же вопрос "зачем": Т.к. фактически это копипаста существующего решения, но с худшей реализацией и наличием критичных (в т.ч. архитектурных) косяков, которые не позволяют нормально использовать этот компонент. Ну помимо того, что использовать его просто невозможно ввиду отсутствия в пакагисте)))

Отсюда, с точки зрения здравого смысла и этот вопрос: Зачем делать то, что и так существует, только архитектурно неправильно и в целом хуже? И варианта кроме как "потому что могут" тут, боюсь что нет.

Чем хуже конкретно данный валидатор?

Подкол был в том, что у вас возникли вопросы к Битрикс, и не возникли к Yii и Laravel, которые тоже свои валидаторы сделали, а не заиспользовали Symfony ;)

1. Атрибуты, которые семантически должны представлять из себя классы метадаты отвечают ещё за валидацию. Смешение логики и правил маппингов.

А почему вы так решили? Валидацией занимаются валидаторы, атрибуты привязываются к полю и поставляют валидаторы, которыми это поле нужно проверить. В самой статье есть отдельный абзац и пример про использование валидаторов без атрибутов.

2. В примерах кода не вижу вообще возможностей вынести правила валидации отдельно от DTO, например в yaml, php, json, etc. Чтобы правила можно было указывать во внешних файлах и изолировать от DTO.

Как мне кажется, нигде кроме symfony вы и не найдёте вынос правил валидации в yaml файл :D

Нужно ли валидацию насколько далеко уносить от кода, который её использует? Очень сомнительно.

3. Не вижу зависимых правил и сложных выражений, типа When X then (Y or Z). И даже реализовать подобное невозможно, кажется, учитывая то что в правила валидации приходит значение только одного поля.

Если речь про атрибут свойства - то да, валидироваться будет только значение одного свойства.

Если сделать атрибут класса - то он принимает весь объект и может формировать любые правила и условия. В статье проверка нескольких полей отражена в примере AtLeastOnePropertyNotEmpty

Напишите пример как это должно работать по вашему мнению, желательно на примере валидаторов симфони, раз уж вы начали сравнивать с ним ;)

4.Способа внедрить в конструктор в валидаторы тоже не вижу, т.к. см. п.1. Ну типа есть, например, сервис, предоставляющий анализ текста на "мат", как его всунуть в валидатор, чтоб сказать: #[DoesNotContainSwearWords(criteria: 0.2)], который уже делегируется нужному валидатору, который содержит инфу и локализации, и нужные коннекты к сервису и прочее.

А в чем проблема? Создаете атрибут DoesNotContainSwearWords , который принимает все настройки и поставляет нужный валидатор, создаете собственно этот валидатор DoesNotContainSwearWordsValidator , который реализует необходимую вам логику.

5.Контекста и прочей инфы тоже нет, т.к. см. п.1

А прочей это какой? И насколько это надо для операции валидации конкретного поля?

Опять же если сопроводите примерами из symfony, будет невероятно великолепно ;)

6.А в виде пакета как это поставить и посмотреть? Ну вот я хочу использовать у себя этот пакет отдельно в проекте, например...

А вы в целом работали с Битрикс? Знаете что он не через composer устанавливается? :)

А если же сравнивать с тем же Symfony, то, например у меня, сразу возникает такой же вопрос "зачем": Т.к. фактически это копипаста существующего решения, но с худшей реализацией и наличием критичных (в т.ч. архитектурных) косяков, которые не позволяют нормально использовать этот компонент. Ну помимо того, что использовать его просто невозможно ввиду отсутствия в пакагисте)))

Потому что Битрикс это не библиотечка, которая собирается из packagist-a . Внедрять сторонний компонент, с кучей сторонних зависимостей, в коммерческий проект, который затем неизбежно будет зависеть от этого стороннего решения - крайне плохая мысль. Тем более если речь про конкретный функционал.

Адаптация и интеграция того самого великолепного решения, которое лучше в тыщу раз, под используемые в Битрикс классы и сущности также не задача из разряда "просто сделай composer require".

Ну и вам уже надо определиться с вашим отношением к валидации в Битрикс: это всё-таки "копи-паста" или же это "худшая реализация" ;)

Отсюда, с точки зрения здравого смысла и этот вопрос: Зачем делать то, что и так существует, только архитектурно неправильно и в целом хуже? И варианта кроме как "потому что могут" тут, боюсь что нет.

Я тоже с точки зрения здравого смысла не понимаю зачем нужны еще какие-то решения и фреймворки, если есть symfony ;)

Ааа так это и есть атрибуты, ничего себе, кто бы мог подумать!

Чем рутина написания валидации для конкретной формы на РНР или Джаваскрипте или подключением какого нибудь "симфонийского валидатора" отличается от рутины написания классов с атрибутами и функциями?
И как это работает на фронте?

Спасибо, буду пользоваться (͡°͜ʖ͡°)

Sign up to leave a comment.