The Ant
чет всегда думал ты тоже с уии2 сбежал
The Ant
дока в ларе куцая
The Ant
вроде и изобилует примерами, но не объясняет что происходит
Павел
дока в ларе куцая
Хз, для новичка более понятная чем симфа, но это имхо не более.
Павел
Я просто в симфу залез именно как новичок фреймов а не после годов работы на других
Павел
@theantt Ну а картинка про то, что все же от тебя были вопросы и как обычно хейт всего)) так что слышать как ты без сложностей залетел и на ковре самолете тут рассекаешь -угарнул)
The Ant
это не сложности, а рабочие моменты :D
Павел
The Ant
сложности это когда "Я нихуя блять не понимаю! Можно блять без этого?! Нахуяя оно тут надо?!" *гиф с кариной
Павел
Vlad
The Ant
первая сложность с симфой была когда я не смогу в дсн доктрины засунуть пароль со спец символами. До сих пор калит эта хрень
Павел
The Ant
почему я не могу сделать пароль такой какой хочу?! дилетанты проектировали, не иначе
The Ant
Не делай дсн)
ну да, а потом отдаю фрилансеру какому, а он глаза выпучивает "а чо? а почему? всмысле?!"... а сам типо 30лет опыта на симфе
Павел
The Ant
в доке про это ничего )
Павел
в доке про это ничего )
https://symfony.com/doc/current/reference/configuration/doctrine.html#doctrine-dbal-configuration полюбэ)) сложностей у него нет))
The Ant
ну вот ты знаешь че гуглить, а я в бандл лез чтобы посмотреть как оно там конфигурируется :D
The Ant
в любому случае, говно идея вот так конфижить
The Ant
люди реально не понимают что это как есть
Denis
Приветствую!
Если вызываю в методе контроллера с __invoke другой сервис с __invoke методом внутри, подключенный через DI в конструкторе контроллера, то падает ошибка:
Attempted to call an undefined method named 'testResponder'
В других случаях ошибок нет (если вызов сервиса идет не через invoke-технику, а через метод другой, либо если сервис инжектится через параметры НЕ-конструктора )
Плюс видим подсветку PHPStorm, что метод не найден (см. скриншот)
Почему так не работает? И как можно подключить сервис с __invoke методом через DI в конструкторе с последующим вызовом в методах?
Возможно как-то настроить это можно в конфигах сервисов?
https://i.imgur.com/fAvRFLw.png
Ivan
Вызывай как $this->testResponder->__invoke()
Vlad
Kirill
Всем привет! В проекте использую DTO для входящих параметров вместо Request.
class UserDTORequest
{
private ?string $name = null;
}
Получается, что невозможно определить, передали с фронта в это поле null или не передали поле совсем. В обоих случаях значение в нем будет null. Как с этим быть?
Kirill
Как при использовании ДТО получить функционал
$request->request->has('name') ?
Dmitry
А что по факту это меняет, в любом случае может быть null?
Dmitry
Юра
Только через рефлексию
Юра
узнать было ди поле инициализировано можно через рефлексию
Kirill
сейчас попробую, спасибо!
Юра
Ну либо ставь по дефолта какуюто строку маркер
Юра
И проверяй
Юра
string $name = 'unset'
Kirill
через рефлексию универсально, кажется, это то, что надо
Юра
Да главное случайно не прочитать его позже а то упадет
Юра
Но это лучше чем записать строку маркер в БД )
Kirill
Cannot access non-public member
Dmitry
Kirill
$rp = new ReflectionProperty(UserDTORequest::class, 'name');
$rp->isInitialized(new UserDTORequest());
тут возвращается true, даже если с фронта оно не приходит
Юра
А ты убрал его инициализацию?
Юра
Должно быть public ?string $name;
Юра
И все
Юра
Сделать его публичным
Юра
Только назад потом поставить )
Kirill
Действительно, без инициализации работает. Спасибо большое!
Ivan
Привет. Есть у меня потребность встроить что-то типо middleware в обработку результатов запроса через кверибилдер. Например у ОРМ есть евент Doctrine\ORM\Events::postLoad и можно повесить сабсрайбер и на основе атрибутов\анотаций\типа поля поменять логику обработку конкретного поля у ентити. Но логично что эти евенты не срабатывают если через кверибилдер получать не всю сущность а только часть полей (например если дописать select([username,email]), но что-то похожее для dbal я не увидел. Кто-то делал что-то подобное или знает про это?
Я нашел примерно как это сделать но нужно будет переопределять классы EntityManager,Query,Parser,ParserResult.ResultSetMapping но такой вариант прям вообще не очень
Юра
Наверное такое лучше делать через ДТО?
Юра
И в нем менять и прочую логику
Юра
Понимаю что это вообще не тоо ответ который ты ждешь, но похоже кейс про дто
Юра
В этом действительно минус ОРМ, это слой у которого размыты границы
Юра
И непонятно что в нем должно быть а чего не должно
Ivan
Вот как-раз сейчас эта логика в ДТО, а так не должно быть.
Nikolay
Ivan
не совсем понял вопрос. Что именно нужно сделать с данными?
Nikolay
Павел
Nikolay
Хуки доктрины это самое плохое что в ней есть
Павел
Вы лучше опишите проблему, возможно подходите не с той стороны
Ivan
нет, не совсем в дто. Сейчас данный попадают в дто, а далее эта дто прогоняется через специальный класс который преобразует некоторые данные в дто. Это не нормализации а замена в соответствие с некоторой бизнес логикой проекта.
Например у объекта Товар есть некоторый набор данных и в зависимости от прав пользователя которые проставляются через админку нужно некоторые данные частично скрыть. Это только одна из задач которую нужно сделать
Павел
Павел
Например можно нормалайзер построить для товара.
Павел
Пока похоже что построение кабины на корабле решается через замену материала вёсел
Павел
Ivan
Возможно, но как по мне будет удобная штука для некоторых задач
Nikolay
Павел
Плюс конечно есть, типо что при любом сохранении тот же акссесс лайер сработает, если он настроен на ивенты доктрины. Но ппц магия, проблемы с пониманием и поиском ошибко - будут всегда
Ivan
НУ как неявное, это же будет для каждого нужного поля в ентити будет указано какие для него могут быть преобразования. Вполне все будет заметно
Nikolay
Ivan
Я думаю это вопрос к пониманию middleware вообще
Юра
Ну оберни все свои геттеры вызовом какой-то глобальной фции
Юра
Хотя если там частичный каери билдер там же вообще не.энтити
Ivan
Ivan
Если работать только с ентити то Doctrine\ORM\Events::postLoad хватает
Юра
Не знаю. Делаешь дто, который потом прогоняешь через мидлвери
Юра
Так уж лучше чем хачить дбал