Alexey Mishurovskiy
в DTOSchedule пропиши аннотации валидации. и валидируй объект целиком
Alexey Mishurovskiy
тебе не нужна будет вся эта партянка
Alexey Mishurovskiy
а что именно не получается ? не работает или ругается ?
Shokha
вот дто
Shokha
Alexey Mishurovskiy
зачем ты все пихаешь в один валидатор
Alexey Mishurovskiy
ты для начала провалидируй каждое ДТО в отдельности, посмотри что все работает
Alexey Mishurovskiy
ты пытаешьшься в коллекцию занихать валидацию элементов -ДТО а их валидация должна лежать в них самих.
Alexey Mishurovskiy
Как говорится Keep it simple
Shokha
Как говорится Keep it simple
вот так работает! но теперь надо сказать что times будет массив и там значения должен быть типом time
Shokha
вот так получилось
Юра
А если спамить запрос в.объект и его отвалидировать обычными ассертами?
Юра
Так сказать dto
🦔
/report @admins :x
Roman
Привет. Есть приложение и есть часть кода, вынесенная в отдельный composer пакет. В пакете в тестах есть набор классов а-ля SomeObjectBuilder для упрощения тестов. Тесты в пакете добавляются в .gitattributes export-ignore, чтобы композер на продакшн лишнего не тянул. Возникла проблемка. В тестах приложения, которое использует пакет понадобилось использовать билдеры из пакета. Но composer install по умолчанию игнорит папку с тестами. Вопрос: как бы поэлегантней запросить полное скачивание (composer install —prefer-source), но конкретно одного этого пакета и для dev окружения? Пока варианты такие: 1) Убрать export-ignore для папки tests пакета, но тогда будет на продакшн тянутся лишнее 2) Делать при билде для dev / testing окружения: composer install --no-cache --prefer-dist --optimize-autoloader --no-progress rm vendor/my-namespace/my-package -rf \ composer install --no-cache --prefer-source --optimize-autoloader --no-progress Но у этого варианта неудобство, разработчики вместо привычного composer install должны будут запускать make install, где будут аналог строк выше...
Юра
Юра
Привет. Есть приложение и есть часть кода, вынесенная в отдельный composer пакет. В пакете в тестах есть набор классов а-ля SomeObjectBuilder для упрощения тестов. Тесты в пакете добавляются в .gitattributes export-ignore, чтобы композер на продакшн лишнего не тянул. Возникла проблемка. В тестах приложения, которое использует пакет понадобилось использовать билдеры из пакета. Но composer install по умолчанию игнорит папку с тестами. Вопрос: как бы поэлегантней запросить полное скачивание (composer install —prefer-source), но конкретно одного этого пакета и для dev окружения? Пока варианты такие: 1) Убрать export-ignore для папки tests пакета, но тогда будет на продакшн тянутся лишнее 2) Делать при билде для dev / testing окружения: composer install --no-cache --prefer-dist --optimize-autoloader --no-progress rm vendor/my-namespace/my-package -rf \ composer install --no-cache --prefer-source --optimize-autoloader --no-progress Но у этого варианта неудобство, разработчики вместо привычного composer install должны будут запускать make install, где будут аналог строк выше...
Юра
Это не поможет?
Unreal
Привет. Есть приложение и есть часть кода, вынесенная в отдельный composer пакет. В пакете в тестах есть набор классов а-ля SomeObjectBuilder для упрощения тестов. Тесты в пакете добавляются в .gitattributes export-ignore, чтобы композер на продакшн лишнего не тянул. Возникла проблемка. В тестах приложения, которое использует пакет понадобилось использовать билдеры из пакета. Но composer install по умолчанию игнорит папку с тестами. Вопрос: как бы поэлегантней запросить полное скачивание (composer install —prefer-source), но конкретно одного этого пакета и для dev окружения? Пока варианты такие: 1) Убрать export-ignore для папки tests пакета, но тогда будет на продакшн тянутся лишнее 2) Делать при билде для dev / testing окружения: composer install --no-cache --prefer-dist --optimize-autoloader --no-progress rm vendor/my-namespace/my-package -rf \ composer install --no-cache --prefer-source --optimize-autoloader --no-progress Но у этого варианта неудобство, разработчики вместо привычного composer install должны будут запускать make install, где будут аналог строк выше...
на проде composers install --no-dev пробовали?
Roman
--no-dev длы прода есть , это само собой. Однако пакекет то на проде используется. А о куда качает source/dist в композере к окружению не относится.. Там два отдельных флага - - prefer-source / - - prefer-dist
Unreal
Зачем вам тестовые пакеты на проде?
Unreal
Ничего не понятно
Roman
Пакет - это рабочий код + тесты к нему. Рабочий код нужен на проде, тесты нет. Это делается следующим образом: Композер может устанавливать пакет (composer install) либо через source либо через dist. По умолчанию dist (—prefer-dist) - это архив с кодом. Гит может исключать из архива лишнее через .gitattributes, поэтому папка тестов в прод не попадает. source (—prefer-source) - качает через git clone из репы, это дико долго и неэффективно, если качать все пакеты так. Конкретно в этом случае для dev окружения для конкретно этого (и только этого) пакета нужно качать именно —source, так как в тестах приложения используется классы из тестов пакета.
Shokha
/** * @ORM\Column(type="date_immutable", nullable=true) */ private DateImmutableType $birthDate; $user->setBirthDate('2020-01-01'); error: Cannot assign string to property of type Doctrine\\DBAL\\Types\\DateImmutableType
Shokha
как передать в сеттере что 2020-01-01 это DateImmutable
kix
Принять строку и в сеттере инстанцировать то, что нужно
Shokha
DateImmutableType? ты серьезно?
Я уже поправил спасибо
Andrey
Доброго дня! А подскажите, пожалуйста, есть entity, в ней есть поле типа jsonb как выбрать только те, у которых проходит в том числе и такое условие: jsonb_exists(field, 'myKey') ? условия собираются динамически
Юра
https://github.com/opsway/doctrine-dbal-postgresql
Юра
может это поможет?
Dmitriy
Всем привет! Извините, возможно оффтоп, у меня вопрос по phpstorm. При заполнении объекта, бывает нужно выбрать большое кол-во сеттеров. Я выбираю их из списка по одному, если сеттеров много, то можно пропустить парочку и приходится сверяться с общим списком - короче это не удобно. Может быть есть способ как выбрать все сеттеры сразу или выделить нужные? Расскажите как решаете эту проблему?
kix
Добавьте именованный конструктор, который бы всё нужное в себя отдельными параметрами включал
Dmitriy
Добавьте именованный конструктор, который бы всё нужное в себя отдельными параметрами включал
никогда не использовал именованный конструктор. Почитаю про него. Спасибо!
Юра
Напугал именоваными конструкторами
Юра
Я думал чет новое добавили уже
Юра
Типо как в дарте
kix
Ну дак public static function createFromBlahBlah
Юра
А вообще да адептам ДТО надо написать уже плагин для шторма который бы сеттеры генерил
Юра
тут недавно кидали какую-то либо которая перегоняет из одних объектов в другие. как-то там маппер какой-то
Юра
Может поможет тебе
Alexey
А вообще да адептам ДТО надо написать уже плагин для шторма который бы сеттеры генерил
Там без плагина это все есть: и геттеры, и сеттеры, и флюент сеттеры
Юра
Та я про вызов сеттеров
Юра
https://github.com/mark-gerarts/automapper-plus
Alexander
Та я про вызов сеттеров
Адепты дто (на самом деле адепты типизации) предпочитают именованные конструкторы и отсутствие сеттеров как таковых :)
Dmitriy
тут недавно кидали какую-то либо которая перегоняет из одних объектов в другие. как-то там маппер какой-то
спасибо. это я задавал вопрос про маппер) у меня объект собирается из нескольких объектов, и тут автоматический маппер не поможет (особенно если поля называются по-разному). я думал, что шторме можно как-то вызвать сеттеры пачкой, а не по одному
Юра
Не ну а за что нам платят
Юра
Сеттеры дергать
Юра
Иначе чё
Alexander
По ссылке самый первый пример - класс без сеттеров
Юра
Ты не заметил там комент
Юра
// and so on
Alexander
и там дальше геттеры
Alexander
Хорошая, годная статья по теме - https://www.thinktocode.com/2018/08/30/named-constructors-for-domain-objects/
Alexander
// and so on
https://www.thinktocode.com/2018/04/02/symfony-4-rest-api-part-2-data-transfer-object/
Dmitriy
Хорошая, годная статья по теме - https://www.thinktocode.com/2018/08/30/named-constructors-for-domain-objects/
Не понимаю, на использование сеттеров провоцирует сама симфони, при создании того объекта для доктрины. Получается, когда я создаю сущность для БД ,нужно сносить все сеттеры и делать именованные конструкторы?
Alexander
Ну симфони и круды в контроллерах генерирует. Никто не запрещает свои генераторы сделать, например.
Alexander
Нужно это вам или нет - решать вам.
Alexander
Есть проекты без всяких дто, большие, нагруженные - все ок.
Dmitriy
Нужно это вам или нет - решать вам.
Я это понимаю, просто немного пошатнулись авторитеты: никогда не сомневался в правильности подхода с созданием геттеров и сеттеров, сейчас вижу, что есть альтернативы. Буду разбираться, еще раз спасибо
Alexander
Серебряных пуль не бывает
Юра
Сейчас вообще в моду снова заходит функциональщина
Alexander
Alexander
Его совет - делать так.
Alexander
Старый холивар вобщем. https://habr.com/ru/post/224879/
Dmitriy
Старый холивар вобщем. https://habr.com/ru/post/224879/
да, уже нашел статьи на хабре, что геттеры и сеттеры - это нарушение инкапсуляции, надо юзать именованные конструкторы. До этого читал, что конструкторы - это нарушение инкапсуляции.. Короче тут кто во что горазд)
Dmitriy
Его совет - делать так.
но этот подход мне нравится больше, чем сеттеры
Юра
А в конструкторе не должно быть сайд эффектов
Юра
На всякий
Юра
В новом синтаксисе пхп упрощается установка полей из конструктора
Юра