Nikolay
Test results may not be as expected because the XML configuration file did not pass validation Миграцию конфигов ты точно сделал?
Рома
да
Рома
./vendor/bin/phpunit --migrate-configuration
Рома
надо ещё и на базу накатить? я новичок в симфони
Nikolay
нет... странно что ошибка такая вышла... инициализируй чистый конфиг phpunit
Nikolay
у тея проблема не с симфони
Nikolay
причем он у тебя работает
Nikolay
просто варнинги бросает
Рома
запоролись рецепты?
Рома
ок попробую чистую установку
Nikolay
попробуй временно удалить файл phpunit.xml или как он там
Nikolay
и сделай ./vendor/bin/phpunit --generate-configuration
Рома
удалил вывел список команд
Рома
до генерации roman@roman-MaiBook-M:~/tests/fix/proc_apps_symfony$ ./vendor/bin/phpunit Cannot load Xdebug - it was already loaded Xdebug: [Log Files] File '/var/log/nginx/xdebug.log' could not be opened. Xdebug: [Step Debug] Could not connect to debugging client. Tried: 127.0.0.1:9003 (through xdebug.client_host/xdebug.client_port). PHPUnit 10.5.16 by Sebastian Bergmann and contributors. Usage: phpunit [options] <directory|file> ... Configuration: --bootstrap <file> A PHP script that is included before the tests run
Рома
о починилось. спасибо
Михаил
Пфф, чтоб в симфе всё само. Симфа как линукс, в ней можно всё настроить и ты будешь всё настраивать
Рома
вопрос только зачем используют симфони, когда есть удобный ларавел, где нет 10 бандлов и столько же yml файлов
Рома
в симфони есть реализация jobs, расписаний? событий?
Михаил
Вообще не понимаю зачем ты симфу выбрал когда есть ларка
Рома
больше иметь охвата в вакансиях и за симфони предлагают больше
Михаил
Што?
Михаил
Я недавно делал быстрый ресёрч, ввкансий на ларке раза в 2 больше
Михаил
А зп равные
Михаил
Друг, не трать время, ларка топ
Рома
сейчас не так, зп от 100 на ларке, в симфони в 2 раза больше
Михаил
сейчас не так, зп от 100 на ларке, в симфони в 2 раза больше
Сейчас? Капец за неделю расценки поменялись
Михаил
Ну помоему эти индусоиды-симфонисты переоценены, платят тупо за кол-во строк в кодн
Михаил
Вот оно надо тебе?
Рома
нужны бабки и больший охват по вакансиям
Рома
ну и для собственного развития) я ещё планирую yii2 охватить
Михаил
И правильно Ценность сотрудника исчисляется в кол-ве фреймворков которые он познал
Рома
на симфони портируют какое лютое легаси в основном
Рома
да, основной ларавел, но если подвернется вакансия то будет что продемонстрировать
Михаил
на симфони портируют какое лютое легаси в основном
Я больше скажу. На симфони иногда портируют легоси написанный на том же симфони. Различия всего в 4 версии, а уже тяжело это сделать. Треш🗑
Nikolay
Это типа сарказм?
Очень жирный и правильный:)
Nikolay
Да ларка огонь!!!
Nikolay
Там такой кайф в магии... Кода почти нет и все раьотает. Мммм
Nikolay
Там такой кайф в магии... Кода почти нет и все раьотает. Мммм
Да, и ничего не подсвечивает без плагина
Рома
class StmtFactory { use FakerTools; public function create(?array $data = null): Stmt { return (new Stmt()) ->setId($data['id'] ?? $this->fake()->randomNumber()) ->setName($data['name'] ?? $this->fake()->name) ->setEmail($data['email'] ?? $this->fake()->unique()->safeEmail) ->setMessage($data['message'] ?? $this->fake()->realText()) ; } } use Faker\Factory; use Faker\Generator; trait FakerTools { public function fake(): Generator { return Factory::create(); } } public function testA(): void { $model = (new StmtFactory)->create(); dump($model); $this->assertEquals(true, true); } что-то вышло похожее
Рома
Михаил
Но лучше чтоб твоя фабрика стала билдером и какой-нибдуь флюид интерфейс поддерживала. А то крутой хак с аргументом $data - но в тестах не айс. Ну или несколько статичных методов
Михаил
Ну и это Faker\Factory вроде как можно в конструктор к StmtFactorу запихнуть чтоб мазохизмом с трейтами не заниматься
Рома
интересно как лара интегрирует свои хелперы без класса
Рома
чтоб так же написать fake()
Рома
подскажите а такой синтаксис существует, как это сделать в symfony? #[Route(path: '/api/stmts/{$id}', methods: ['put'])]
Михаил
Знак бакса убери
Михаил
И в контроллере в методе объяви параметр с таким же именем как и параметр в пути
Рома
#[Route(path: '/api/stmts/{id}', methods: ['put'])] public function update(Request $request, Stmt $id): Response { return $this->json($this->service->update($id, $request->toArray())); } сработает?
Рома
а в symfony есть классы валидации?
Рома
а есть может библиотека чтоб загрузить модель автоматически, как в ларе?
Рома
Больше не рекомендуется использовать этот пакет в текущих приложениях Symfony. Все аннотации, предоставляемые этим пакетом, теперь встроены в Symfony в качестве атрибутов PHP. Ознакомьтесь с полным списком атрибутов Symfony.
Михаил
Хуя вода, вот это порнография
Рома
да это symfony)
Михаил
Да хуйня полная
Рома
https://symfony.com/doc/current/doctrine.html#automatically-fetching-objects-entityvalueresolver
Михаил
SensioFrameworkExtraBundle
А ну да, точно. Я просто начинал с этой версии и мы сиську использовали. Но потом стало понятно что гегиена пакетов это важно, плюс сделать #[Route(…)] pubf getUser(UserRepository $users, string $id) { $user->getByIdOrThrow($id); Это по строкам столько-же что и парам конвертеры и еже с ними, к тому же репозиторий всё равно нужен - то взяли и выпилили всю эту шелуху. И тебе советую
Рома
теперь как в ларе
Павел
теперь как в ларе
Когда из лары делают симфу, а из симфы лару, то все катится в гавно)
Рома
#[Route(path: '/api/stmts/{id}', methods: ['put'])] public function update(Request $request, Stmt $stmt): Response { return $this->json(['data' => $this->service->update($stmt, $request->toArray())]); } да теперь без лишних анотаций) нативно)
Рома
а что не так?
Михаил
$request->toArray() вместо уже провалидированного DTO
Рома
я ещё не разобрался как это делать в симфони
Михаил
Ну судя по все так же как и в ларке, всё у вас слизали
Рома
/** * Обновление из массива. */ public function updateFromArray(Stmt $stmt, array $data): Stmt { $stmt->setName($data['name']) ->setEmail($data['email']) ->setMessage($data['message']) ->setComment($data['comment']) ->setStatus($data['status']) ->setUpdatedAt(Carbon::now()->toDateTimeImmutable()) ; $this->manager->persist($stmt); $this->manager->flush(); return $stmt; } всё равно здесь не пройдут лишние поля
Михаил
е если у тебя этот роут обновляет Stmt то лучше сделать так #[Route(path: '/api/stmts/{id}', methods: ['put'])] public function update(Request $request, Stmt $stmt): Response { $this->service->update($stmt, $request->toArray()); return $this->json(['data' => $stmt]); }
Рома
хотя доктрина это тот ещё гемор, радует только генерация миграций), как в django
Михаил
в php объекты передаются по ссылке, так что тебе не нужно возвращать всё это дело
Михаил
второе - тебе не нужно повторно персистить сущность Stmt, она и так уже в entity map
Михаил
третье, я бы flush делал уже в контроллере, убрал был вообще упоминание из сервиса
Рома
это не аналог save() ?