Nikolay
То array ещё менее структурирован, parse более
Рома
емае через рефлексию можно менять защищенные поля а я думаю зачем это так часто спрашивают в вакансиях на симфони
Nikolay
Менять? А разве не читать?
Рома
Павел
Риски я назвал, вы профит нет
Nikolay
Профит? Удобство же. Если вам удобно например создать User из DTO, то почему нет? Вызывать какие нибудь события из диспетчера гулпо да
Nikolay
Но если это dto используется ну Реал но только для этих целей. Вот как в симфонии CreateUserDto. Лоьавляю в него Parse и в контроллере у меня готовый валидный объект
Nikolay
Мне эта и идея понравилась из симфоневского дто. Он приходит валидным по параметрам, а по ним я заодно моздаю новый валидный объект юзера
Михаил
Зачееем 😳😳😳
Рома
для тестов вместо setId
Михаил
Ну тогда есть короче запись (fn ($id) => $this->id = $id)->call($entity, 1234);
Павел
Профит? Удобство же. Если вам удобно например создать User из DTO, то почему нет? Вызывать какие нибудь события из диспетчера гулпо да
Удобно многое, но вначале, а потом выстрел в ногу. Ок закончим, друг до друга довели мысли я думаю. Остальное из пустого в порожнее.
Юра
Прям джс какой-то
Михаил
тут фиксировано $id
Ну так передай имя параметра вторым аргументом
Михаил
И врядли у тебя id будет называться не id
Рома
оставлю через рефлексию, полезный пример
Михаил
это работает?
Дааа, пыху кидало из стороны в сторону
Павел
Михаил
Если это вызов то можно и без Call (Fn) (params)
неее, важно именно прибиньдить контекст к сущности чтобы вызвать её приватное свойство или поле
Рома
<?php class StmtFactory { use FakerTools; use EntityTools; /** * @throws \ReflectionException */ public function create(?array $data = null): Stmt { $id = $data['id'] ?? $this->fake()->randomNumber(); $stmt = (new Stmt()) ->setName($data['name'] ?? $this->fake()->name) ->setEmail($data['email'] ?? $this->fake()->unique()->safeEmail) ->setMessage($data['message'] ?? $this->fake()->realText()) ; $this->setEntityProperty($stmt, $id, 'id'); return $stmt; } } namespace App\Traits; /** * Трейт для работы с сущностью. */ trait EntityTools { /** * Обновить защищенное свойство. * * @throws \ReflectionException */ public function setEntityProperty(object $entity, int|string|array $value, string $field): void { $class = new \ReflectionClass($entity); $property = $class->getProperty($field); $property->setValue($entity, $value); } } найс
Рома
и вся логика сетеров и гетеров идет в одно место)
Михаил
Ну технически тесты это часть инфраструктуры - так что можешь метод для проставления id запихнуть прям в сущность
Михаил
типо Stmt::setIdForTest() и под интерфейс
Рома
да если предположить, что я буду делать фикстуры это помешает
Михаил
Можешь ещё через денормалайзер это сделать
Михаил
Ещё в симфе есть propertyAccesser
Павел
Можешь ещё через денормалайзер это сделать
Да вот вот, в самом начале говорил.
Павел
Если хочется магии и автоматики
Павел
Но правда это уже будет зависомость из ядра и его запуск что уже не ок, если юнит тесты
Михаил
Ну а вообще вот нормальный пакет
Михаил
https://github.com/nelmio/alice
Михаил
Чисто ямл конфиг заполнил и всё
Михаил
без ебли
Михаил
Михаил
И фейкер встроен и денормалайзер и методы можно колить
Михаил
И если чо, то можно через php сконфигурировать
Рома
потом когда силами symfony сделаю, перепишу на магию может
Nikolay
И если чо, то можно через php сконфигурировать
Век живи, Век удивляйся, а такого не видел:)
Nikolay
Подобные фикстуры на yii2 только
Михаил
ох, юии
Михаил
массив в массиве и в массиве а также синглтон
Nikolay
Если бы не юии2, я может быть и не стал бы программистом:)
Nikolay
(до сих пор не стал)
Рома
ещё и каждый метод постфикс Action имена методов это названия маршрутов)
Михаил
хотя я начинал с Codeigniter
Nikolay
ещё и каждый метод постфикс Action имена методов это названия маршрутов)
там можно было руками прописывать маршруты. Но сейчас yii3 просто сказка будет
Михаил
смесь симфы с ларой
Рома
разве он продолжает развиваться?
Nikolay
конечно никто не будет на нем кодить. Пионеров мало
Рома
это же лютое легаси в рф сегменте
Михаил
Nikolay
смесь симфы с ларой
ноуп.... Скорее чистый PSR где кучу вещей придется писать руками
Nikolay
yii2 был прекрасен своим Ar и всякими Active Приставками. Сейчас будет просто куча бойлерплейта. Фабрики, Ханделры, Эмиттеры, Фабрика для фабрики, мидлвари ух
Рома
сомневаюсь что 3 версия когда нибуть выйдет фрейморк 2012 года)
Рома
а и установка его как у какого-то битрикса помоему
Nikolay
там от yii только название
Nikolay
там уже куча готовых модулей
Рома
но вакании встречаются так что надо освоить и платят больше
Nikolay
лучше программирование концептуальное изучай, чем фреймворк
Nikolay
ааа сорри
Рома
я знаю много языков и концептуально понимаю)
Nikolay
да да... Толкьо фреймворки, чем большетем лучше
Михаил
Понятийная база нафиг никому не нужна
Nikolay
в Резюмешку все слвоа что знаешь:)
Nikolay
Прям много? Прям отлично знаешь? А может и компьютер саенс знаешь7
Nikolay
Искусство программирования ДЕйстры тоже Осилил. Таненбаума? Маконнела?
Nikolay
эх...
Рома
я програмирую сайты), а не ядро операционной системы) скорее даже работу между базой и сервером
Nikolay
Я приверженец системного/инженерного мышления и междисциплинарного развития. Даже сайты может писать инженер
Nikolay
НУ и продолжишь их писать значит:)