Size: a a a

2021 October 01

S

Sergey in symfony
Подскажите как аннотации в аттрибуты в шторме переделать?
источник

E

Egor#1 in symfony
Привет всем. Делаю вызовы через платформу. Подскажите как сделать так, чтоб один вызов выдавал разные дто в зависимости от пользователя.
вот так у меня не получилось.
#[ApiResource(
   collectionOperations: [
       'get_for_role1' => [
           'path' => 'some/path',
           'method' => Request::METHOD_GET,
           'output' => DtoForRole1::class,
           'security' => 'is_granted("ROLE_1")',
       ],
       'get_for_role2' => [
           'path' => 'some/path',
           'method' => Request::METHOD_GET,
           'output' => DtoForRole2::class,
           'security' => 'is_granted("ROLE_2")',
       ],
   ]
)]
источник

E

Egor#1 in symfony
я написал макрос для вима, но можешь через sed попробовать это сделать
источник

V

Vui in symfony
Dto на выходе для трансформера? Если нет - то почему бы не сделать это группами в сериализации?
источник

V

Vui in symfony
Добрый день. Разбираюсь с архитектурой. Пример такой: есть несколько поставщиков товара, есть общий интерфейс, есть дто базовая и дто расширяемая от базовой, для каждого поставщика (некоторым нужна доп инфа).
Phpstan ругается 'access to an undefined property price'. Но типы параметров могут же быть расширены (solid). Что я делаю не так?
https://phpsandbox.io/e/x/duhq2
источник

R

Roman in symfony
У вас в BuyProductDto нет price, а функция buy(BuyProductDto|BuyFirstProductDto $dto) предполагает, что price есть как у FirstProductProvider, так и у BuyProductDto.
источник

V

Vui in symfony
Я понимаю. Что нужно сделать с этим чтобы можно было расширить дто?
источник

VG

Valentin Gerbey in symfony
Почитай про ковариантность и контравариантность
источник

VB

Valera Bendatiy in symfony
Всем привет, как вызвать валидацию родительского класса через @Assert/Callback в дочернем классе?
источник

✨Basic_Instinct✨ in symfony
@Assert/Valid вроде
источник

VB

Valera Bendatiy in symfony
Пробовал, не помогло
источник

VG

Valentin Gerbey in symfony
а как функция должно себя повести, если придет BuyProductDto, у которого нету price?
источник

V

Vui in symfony
Не if же тут вставлять. Значит подход неверный?
источник

VG

Valentin Gerbey in symfony
ну докрутить твой пример можно, используя generic, если хочется конечно) у тебя же для каждого поставщика свой провайдер
https://phpstan.org/r/913f311e-7bd5-4f01-93d0-193b5f94f606
источник

V

Vui in symfony
Спасибо, как вариант. Но такие примеры решают наверно без дженериков ?
источник

VG

Valentin Gerbey in symfony
Ага, может тебе не надо интерфейс просто?
источник

V

Vui in symfony
С абстракным классом и методами так же
источник

SP

Sergey Protko in symfony
типы могут быть расширены до тех пор пока ты соблюдаешь LSP (SOLID)
источник

SP

Sergey Protko in symfony
вообще "расширять" dto дело не благородное, потом много проблем с этим. Если у тебя "разные структуры данных" то это разное проще разделить через юнион в свойстве общего dto с дискриминатором. что бы потом фронт мог понять че на че мэпить.

"расширение" из Solid оно не про "экстенди реюзай", оно про проектирование точек расширения которое позволяет добавлять новый функционал не меняя сущесвующий код.
источник

VG

Valentin Gerbey in symfony
не использовать интерфейс и не использовать абстрактный класс
источник