Size: a a a

2020 December 16

КГ

Константин Грачев... in PHP
Более того тебе уже из коробки доступна аннотация, которая делает тоже самое только без интерфейсов.
Вот по имени наверное соглашусь. У моих дто тоже всегда суффикс Dto/Request. Но опять таки, мне не впадлу аннотацию написать и впадлу писать плагин)
источник

КГ

Константин Грачев... in PHP
Аннотация мне на дистанции дешевле выйдет
источник

VS

Vlad Sobenko in PHP
Константин Грачев
Аннотация мне на дистанции дешевле выйдет
Ну да, тоже верно. Я пока тоже, как ты делаю. Просто задумывался про плагин.
источник

КГ

Константин Грачев... in PHP
У меня уже был как то плагин для пхпстана, вроде даже 2 раза пришлось его изменять ибо апи менялся.
А потом в третий раз пришлось возвращаться к этому плагину, чтобы его выпилить. Ибо то что он делал завезли в пхпстан
источник

КГ

Константин Грачев... in PHP
Vlad Sobenko
Ну да, тоже верно. Я пока тоже, как ты делаю. Просто задумывался про плагин.
Не стоит ставить во главу угла облегчение написания кода. Я года 3 этой ошибкой тоже страдал. Важнее думать над облегчение поддержки кода на дистанции.
В том чтобы написать пару лишних символов вообще никаких проблем нет. В то же время эта экономия на спичках всегда оказывается убыточной. Ибо время на реализацию плагина и его поддержки уходит больше чем написание этих пары символов в течении нескольких лет наперёд
источник

КГ

Константин Грачев... in PHP
Помню как я целый день убивал на то чтобы написать какую нибудь срань, которая мне позволяла реализовывать какой то бойлерплейт в 1 вызов функции.
А через 2-3 месяца, проебавшись пол дня вспоминая как это же это говно работает приходил к выводу, что под новые задачи эта срань не кастомизируется, и принимал решение просто выпилить под ноль и прокопипастить везде то что оно мне "экономило"
источник

MM

Maksim Masiukevich in PHP
Vlad Sobenko
access property before initialization ловить?
оно не об этом же, не поможет
источник

MM

Maksim Masiukevich in PHP
чисто рантайм факап, хз для чего добавленный.
столько лет приучали, что оно налл, а в конце раком поставили
источник

AD

Andrey Dembitskyi in PHP
Maksim Masiukevich
рефлексией :)
не для всех классов это правда
источник

КГ

Константин Грачев... in PHP
Vlad Sobenko
access property before initialization ловить?
Это же dto, я там типизированные свойства просто не использую.
Ведь прежде чем провалидировать объект его сначала надо создать. Во всяком случае всякие symfony/validator именно так и работают. Типизированный объект уже по идее должен быть валидным
источник

КГ

Константин Грачев... in PHP
Кстати PropertyNotSetInConstructor вроде и не будет стрелять если типов у свойств не будет. Стрелят только MissingConstructor)
источник

АС

Альберт Степанцев... in PHP
Константин Грачев
Это же dto, я там типизированные свойства просто не использую.
Ведь прежде чем провалидировать объект его сначала надо создать. Во всяком случае всякие symfony/validator именно так и работают. Типизированный объект уже по идее должен быть валидным
вам никто не мешает валидировать в конструкторе и разрушать там же объект, если он невалиден
источник

MM

Maksim Masiukevich in PHP
Альберт Степанцев
вам никто не мешает валидировать в конструкторе и разрушать там же объект, если он невалиден
всякие валидаторы, сериалайзеры и прочие гидраторы создают объект рефлексией, кладя болт на конструктор
источник

АС

Альберт Степанцев... in PHP
никто не говорит, что это единственный правильный путь
источник

КГ

Константин Грачев... in PHP
Maksim Masiukevich
всякие валидаторы, сериалайзеры и прочие гидраторы создают объект рефлексией, кладя болт на конструктор
Симфони пытается передать в конструктор если он есть и публичный)
источник

MM

Maksim Masiukevich in PHP
для вендорного кода это самый правильный путь)
источник

КГ

Константин Грачев... in PHP
Я по началу приватил конструктор, а потом задумался нахер он вообще тут нужен
источник

КГ

Константин Грачев... in PHP
Альберт Степанцев
вам никто не мешает валидировать в конструкторе и разрушать там же объект, если он невалиден
Этож код писать надо, зачем если он уже написан :)
источник

КГ

Константин Грачев... in PHP
Кстати кто знает как в java/kotlin это дело происходит? Валидирует данные до создания dto?
источник

PA

Pavel Agaletskiy in PHP
конечно, ошибка десериализации будет
источник