Kirill
с шансом 50% угадаешь
Vlad
так и я могу
Да, досих пор ругаюсь на твой гидратор в темпорал 😁
The Ant
ля, ладно, азвтра на проде проверю 😂
Kirill
Да, досих пор ругаюсь на твой гидратор в темпорал 😁
ну и правильно делаешь, шляпа ещё та
Vlad
Тебе нельзя их писать!
Kirill
я нормальный написал, но его не одобрили
Kirill
на основе нормальных типов https://docs.phpdoc.io/php-type-language/parser
The Ant
Умеет вроде
ну вот я тож помню чет такое было, а в каких случаях не помню )
Vlad
Странно) кто там такие решения принимает?
Kirill
А самое весёлое - Workflow::X и Activity::X
Kirill
и отключённые ошибки, когда от сервера не пришёл ответ по RPC
Kirill
или наоборот лишний пришёл
Kirill
ну и на дворе как бы 2024ый год, а там до сих пор yield, вместо файберов
Vlad
А самое весёлое - Workflow::X и Activity::X
Ну на это пофиг)) раздражает пока что гидратор. Пришлось свои костыли воткнуть, и то на возвращаемых типах пока грусто
Kirill
да там его подменить можно должно быть
Kirill
я делал так, чтобы половину выкинуть можно было)
Kirill
ага, придумал решение лучше, молодец
Kirill
только симфони ещё хуже)
Kirill
JMS самый адекватный пока что
Kirill
и быстрее симфы раз в 10
Vlad
только симфони ещё хуже)
Ну если сравнивать с ведорным, то нет)))
Kirill
Ну если сравнивать с ведорным, то нет)))
ну и ты на сроки посмотри))))
Kirill
там весь код за 2-3 месяца был написан
Михаил
1 к 1
я умею в английский, просто нет такого аттрибута Нашёл какойто OneToOne - тоже работает
The Ant
это он и есть
Vlad
https://github.com/temporalio/sdk-php/issues/385 а вот это показатель популярности пакета)))
The Ant
просто to сокращается до 2
Vlad
там весь код за 2-3 месяца был написан
Тяжело тяжело, что еще сказать
Михаил
Kirill
да JMS надо было взять по хорошему
Vlad
да JMS надо было взять по хорошему
Ну это можно сделать, выбор предоставить. Как там со phpstan типами?
Михаил
Вы про этот темпорал щас говорите? https://temporal.io/?
Vlad
Да
Михаил
зумеры переизобрели erlang?
Kirill
самому писать
Vlad
да никак)
Ну как в sf, я понял
Kirill
Ну как в sf, я понял
в SF всё хуже на порядки
Kirill
в sf ты хрен сделаешь массив из объектов
Kirill
ну и ошибок нормальных там вообще нет
Vlad
array of object?
Kirill
ага, list<User> например
Vlad
Кирилл тебе инет выключили походу))
Vlad
Такое поддерживает
Vlad
зумеры переизобрели erlang?
Нет, лучше посмотри для начало доклады.
Vlad
Кирилл тебе инет выключили походу))
Вот что он делает плохо, он опускает типы
Kirill
Кирилл тебе инет выключили походу))
ага, и что я делаю не так? <?php require __DIR__ . '/vendor/autoload.php'; class User { /** * @param non-empty-string $id */ public function __construct( public readonly string $id ) {} } class UsersCollection { /** * @param list<User> $users * @param int<1, max> $count */ public function __construct( public readonly array $users, public readonly int $count, ) {} } $serializer = new \Symfony\Component\Serializer\Serializer([ new \Symfony\Component\Serializer\Normalizer\ObjectNormalizer(), ]); $result = $serializer->denormalize([ 'users' => [ ['id' => 'asdasd'], ['id' => 'assss'], ['id' => 'xxxx'], ], 'count' => 42, ], UsersCollection::class); var_dump($result);
Михаил
Нет, лучше посмотри для начало доклады.
ну я щас смотрю. Просто какой-то странный треш. Типо что-то между машиной состояния и сагами.
Vlad
ArrayDenormalizer
Kirill
Ну там надо еще аддеры и геттеры докинуть
не, сеттер нельзя, это обязательный аргумент
Kirill
именно в конструктор
Kirill
ArrayDenormalizer
добавил, ничего не поменялось
Kirill
)
Vlad
Ля, щас пойду до компа
Павел
не, сеттер нельзя, это обязательный аргумент
Ну коллекция сама по себе может содежать 0 элементов на то она и коллекция
Павел
Так что adder норм, а там ты уже сам накидал ограничений в стиле "а сериалайзер вот так сможет?"
Kirill
это не коллекция, а массив
Kirill
а массив можно ограничить на non-empty-list<User>
Kirill
даже не массив, а список)
Kirill
ещё хуже
Kirill
более того, DTO должны быть в идеале иммутабельными
Павел
Опять же он вроде может и без аддеров, но надо вроде всякие докблок парсеры подключать или как то так
Kirill
в JMS достаточно свой тип добавить, так же как в доктрине
Kirill
и маппинги так же как в доктрине
Kirill
атрибуты/xml/yaml
Kirill
так что просто указываешь свой тип и просто пишешь на него логику и всё
Vlad
добавил, ничего не поменялось
https://gist.github.com/root-aza/f187742fc236e4fbfc6452347b1c66ea
Kirill
#[Type('non-empty-list<User>')] например)
Павел
так что просто указываешь свой тип и просто пишешь на него логику и всё
Да, это называет денормалайзер. Делаешь на UsersCollection только тогда смысл теряется
Vlad
Kirill
https://gist.github.com/root-aza/f187742fc236e4fbfc6452347b1c66ea
а, ну если так... прикольная тема с пхпстан экстрактором
Kirill
осталось им из ядра фатальные ошибки убрать)