@phpclubru

Страница 726 из 956
Adel
20.12.2018
17:25:45
Но она неправильная. Простую валидацию реквеста все равно надо делать

Adel
20.12.2018
17:26:29
В хорошем приложении ошибки уровня несоотвествия данных для во, не должны происходить

Юрий
20.12.2018
17:28:07
Но она неправильная. Простую валидацию реквеста все равно надо делать
я делаю валидацию реквеста при помощи этого класа https://github.com/Wixel/GUMP

Google
Adel
20.12.2018
17:28:43
Вот тут я страниц двадцать на тему валидации уже написал. В январе надеюсь выложу.

https://leanpub.com/architecture-of-complex-web-applications

Дмитрий
20.12.2018
17:29:48
Pavel
20.12.2018
17:30:11
Данные валидируются в куче мест и в куче слоев

Pavel
20.12.2018
17:30:32
Начиная от электрического сигнала в сетевухе, который валидируется кодами хемминга

Adel
20.12.2018
17:30:41
В каждом своя. Валидация в vo обычно повторяет валидацию веб запроса

Adel
20.12.2018
17:31:41
Всякие ларавельки дают возможность лезть прям в базу в валидации запроса...

Mr. Blonde
20.12.2018
17:31:58
нет же валидации в vo)
Иммутабельность, всегда валидный (это главное)

Adel
20.12.2018
17:32:28
нет же валидации в vo)
VO money не должно дать себя создать с отрицательной суммой. Это тоже типа валидация. Внутренняя

Google
Юрий
20.12.2018
17:32:33
В каждом своя. Валидация в vo обычно повторяет валидацию веб запроса
просто есть универсальный принцип. если данные не соотв определенному формату (паттерну) .. то они не верны.. и такой стандарт применяется во всех облатях..в электронике и в промышленности и в веб разработке

Mr. Blonde
20.12.2018
17:32:54
нет же валидации в vo)
VO - должен быть всегда валидным, если мы создаем объект, значит мы уверены в достоверности данных

Дмитрий
20.12.2018
17:32:58
Adel
20.12.2018
17:33:34
ну не клади туда отрицательную сумму и не создавай его
Я и не кладу. Проверяю в реквеста на положительность

Вот и получается некое дублирование валидации

Но это нормально

Mr. Blonde
20.12.2018
17:33:55
Данные должны быть не только валидными, но и пригодными для хранения (санитизация)

Дмитрий
20.12.2018
17:34:12
Я и не кладу. Проверяю в реквеста на положительность
потому что есть S в solid и vo сделан не для валидации?

Adel
20.12.2018
17:35:04
потому что есть S в solid и vo сделан не для валидации?
Ты предлагаешь не проверять на положительность в money?

Дмитрий
20.12.2018
17:35:25
Adel
20.12.2018
17:35:42
Ну тут мы расходимся

В большом проекте кто-то по-любому не проверит и полетят невалидные данные

Во могут создаваться много где

Дмитрий
20.12.2018
17:37:22
ну в php могут и контрактом брезговать разные.. минусы в карму им..что теперь)

Adel
20.12.2018
17:37:49
Смотри. Валидация в во есть. Но если вдруг туда попали невалидные данные - это значит кто-то в коде ошибся

Т.е. Это валидация не юзерских данных а кода который должен был отвалидировать

Дмитрий
20.12.2018
17:38:52
и vo не место, где мы должны это понять. Вот там где мы их возьмём оттуда, там и поймём

Google
Adel
20.12.2018
17:39:24
Я не хочу вычищать бд от невалидных данных

Дмитрий
20.12.2018
17:39:40
слава богу валидация и в других слоях есть

Я не хочу вычищать бд от невалидных данных
ну тут я согласен, невалидные данные не должны попадать в БД. Но что значит валидные данные, если смотреть со стороны БД?

Adel
20.12.2018
17:44:13
Ничего. Домен только понимает что в поле percent должно быть от нуля до ста

dypa
20.12.2018
17:44:14
Ты предлагаешь не проверять на положительность в money?
отрицательное money это признак того, что кто то украл деньги из кассы например )

Adel
20.12.2018
17:44:37
А в поле email не просто строка а мыло

dypa
20.12.2018
17:45:12
в vo точно не нужно, на мой взгляд
vo нельзя создавать с невалидным состоянием

dypa
20.12.2018
17:45:45
Шуточки всякие. Серьезную тему же обсуждаем!
я не шучу, деньги бывают отрицательными (

Дмитрий
20.12.2018
17:45:48
vo нельзя создавать с невалидным состоянием
я о том же. если данные не валидны - не создавай

Pavel
20.12.2018
17:46:00
Вы кажецца путаете уровни валидации

Данные могут быть валидны с точки зрения типов но невалидны с точки зрения бизнес логики

Adel
20.12.2018
17:46:17
я не шучу, деньги бывают отрицательными (
Ну ладно. От домена зависит, но я против отрицательных денег

Дмитрий
20.12.2018
17:46:51
Adel
20.12.2018
17:46:57
Данные могут быть валидны с точки зрения типов но невалидны с точки зрения бизнес логики
Вот кстати да, вот только я хорошего примера не смог найти в своё время

dypa
20.12.2018
17:47:05
Ну ладно. От домена зависит, но я против отрицательных денег
я тоже против, но они бывают в реальном мире

Adel
20.12.2018
17:47:38
я тоже против, но они бывают в реальном мире
Смотря как построить модель предметной области

Pavel
20.12.2018
17:50:48
Вот кстати да, вот только я хорошего примера не смог найти в своё время
Можно легко придумать не очень реалистинчый но валидный пример. Допустим один пользователь в интернет магазине может купить только один товар и всё. userId=1 купил товар fooId=1 и в базу записалась реляция (1;1). Потом он жмет купить товар fooId=2. В системе при работе появляется VO со полями {userId:1, fooId:2}. Эти данные валидны с точки зрения VO, но невалидны с точки зрения бизнес логики, так как такой пары не может существовать.

Google
Pavel
20.12.2018
17:51:33
И когда этот VO дойдет до валидатора логики, то станет ясно что в базе уже есть (1;1) и VO будет признан ошибочным.

В такой схеме сам VO конечно не должен в базе проверять что нет уже заказа.

Pavel
20.12.2018
17:53:05
Ну да, между расчетами отрицательные суммы могут существовать, но где то должен сработать валидатор, который не позволит зафиксировать такое состояние как в целом валидное для системы.

Дмитрий
20.12.2018
17:54:10
и место этому валидатору, на мой взгляд, не в VO. Иначе принцип описанный выше, рушится

хоть и очень хочется)

Pavel
20.12.2018
17:56:10
Ну если у тебя в системе нигде вообще не должно существовать отрицательных сумм, то можно и это в VO проверять

Дмитрий
20.12.2018
17:57:01
наверное тогда лучше создать объект, который не INT, а какой то диапазон, и его уже передавать в VO

dypa
20.12.2018
17:57:13
VO создает фабрика, может эванса почитаете?!

Дмитрий
20.12.2018
17:57:25
и относиться к такому значению не как к int, которое может иметь отрицательное значение, так как это не простой int, ну или что там для денег))

Artem
20.12.2018
18:02:14
unsigned тип и все. Че вы тут нагородили хз)

Дмитрий
20.12.2018
18:03:17
unsigned тип и все. Че вы тут нагородили хз)
мы тут про валидацию не на уровне БД)

Artem
20.12.2018
18:04:11
мы тут про валидацию не на уровне БД)
Это нужно только чтобы не досить базу, а типы должны проверяться на её уровне.

Artem
20.12.2018
18:06:28
ну тык)
Нужен ЯП с нормальной типизацией, но лучше не валидировать, просто закрыть доступ пользователям и спать спокойно.

Artem
20.12.2018
19:30:40
Это как?
Что именно как? Просто ограничивать тип и его точность/округление на уровне базы. В нормальных бд есть расширения дающие беззнаковые типы с подходящим округлением если речь о деньгах.

Google
Artem
20.12.2018
19:31:55
Можно конечно и на уровне орм ограничивать, либо миграции, если фреймворк используется, но это все фигня уже

Artem
20.12.2018
19:39:04
Олдскульщики подъехали )
Тут фигня в том, что доки устаревают, разработчики увольняются, тесты писать лень, а людям свойственно совершать ошибки. Т. е. Валидация на уровне кода - обязательно сломается. Потому если продукт будет поддерживаться иного пути нет.

Да не фигня, сойдет
Если ты живёшь в мире мелко сервисов, возможно, чтобы не вносить изменения а переписываться, иначе изначально проект до рождения уже легаси

ustasby
20.12.2018
19:44:20
Так и пилим ?
А почему топчешь нашу радугу и всех пони уже распугал)

Artem
20.12.2018
19:45:51
Мне нравится куда идет пхп, особенно когда я только пресс релизы читаю, стараюсь быть в курсе)

Alexander
20.12.2018
22:49:15
Привет, ребят

Да, я пью

И развлекаюсь

Так что джмми джефриз говорит, что все крутго

Короче, я хреновый шутник

Alexey
20.12.2018
22:56:09
чатик перепутал?

Alexander
20.12.2018
22:56:37
Не, у нас надо шутить

Это ты перепутал

Выгони меня, Лех)

А точно

Ты не можешь)

Страница 726 из 956