php bin/console server:run 8000, где 8000 - это порт, который он будет слушать.composer require symfony/web-server-bundle --dev 1. Вы можете реализовать свой гидратор (hydrator). Гидраторы как раз и занимаются созданием сущностей. Только официальной документации по созданию гидраторов нет. Есть это: https://www.doctrine-project.org/projects/doctrine...
Есть еще старая статья: https://techpunch.co.uk/development/create-custom-...
И статья про гидраторы от Marco Pivetta: https://ocramius.github.io/blog/doctrine-orm-optim...
2. Вы можете подписаться на событие postLoad: https://www.doctrine-project.org/projects/doctrine... и бросать исключение сразу же после создания объекта.
Но, на мой взгляд подобное решение приведет к плохим последствиям т.к. исключение будет бросаться в самых неожиданных местах. Как вы будете его обрабатывать?
Лучше локализуйте проблему там, где она возникает, бросая исключения в коде, не допускающем null-значений:
В самой же БД они уже должны быть валидны. И ваша проблема не в Doctrine и отсутствии валидации, а в том, что в БД невалидные данные. Бороться надо с этим.
Сделайте в БД поле NOT NULL и пусть индусы не кладут туда его. Или же, если не можете, сделайте сущность, которая может работать с NULL.
Это ваша задача этого не допускать. Если вы это допустили, ошибки Doctrine - это меньшее, что может вылезти.
Ну так может быть стоит привести схему и сущность с маппингом в соответствие друг другу, а не отстреливать симптомы?
Решается это так:public function getName(): ?string
Я сначала было хотел вам предложить валидировать данные на входе в сущность (конструктор)
вы вообще используете Doctrine очень странно и ждёте, что сама Doctrine будет вам предоставлять средства для ухода от возникающих проблем.
Первое и самое важное: Doctrine - это Data Mapper. Если у вас маппинг и сущность не соответствуют схеме - работать ничего нормально не будет. Лечите заболевание, а не симптомы.
P.S. PHP писали не Cшники, а PERLовики, и много поведения унаследовано именно оттуда.