Konstantin
но платежная система об этом ничего не знает, у заказов сквозной serial number есть. так вот коллбек от пайпала приходит по одному урлу - /orders/1234/complete допустим. а дальше уже резолвер разбирает что это за заказ и как его конкретно надо комплитить
Иван
обработка веб хуков платежных например
а зачем их делать на одном урле, если можно делать на разных?
Vlad
а зачем их делать на одном урле, если можно делать на разных?
платежная система скажет незя) тока один урл. Все которые встречал платежки обычно один урл,тот же самый paypal/stripe
Konstantin
именно
Vlad
тока в яд можно вешать несколько урлов под каждый евент
Иван
платежная система скажет незя) тока один урл. Все которые встречал платежки обычно один урл,тот же самый paypal/stripe
ей то какая разница? у нас в ботхлебе было 3, робокассу отлично запулили на другие калбеки, чем юмани
Vlad
ей то какая разница? у нас в ботхлебе было 3, робокассу отлично запулили на другие калбеки, чем юмани
хз, кароче один урл под вебхуки тянется с бородатых временем, почему нельзя сделать несколько урлов под каждый евент загадка для меня.
Vlad
да и это не проблема на самом деле, все решается стратегией
Dmitriy
Вместо вебхуков можно опрашивать статус платежа в эквайринге
Spider
всем привет. Пытаюсь настроить симфу и докер как указано тут https://symfony.com/doc/current/setup/docker.html
Spider
но не выходит поставить орм - докер падает с ошибками
Konstantin
Nikolay
неважно!
Согласен
Spider
пробоавал разные системы разные ошибки
Nikolay
пробоавал разные системы разные ошибки
Я поднимал сборку но не по документации, все работает
Spider
простите видимо чтото совсем не то неделал
Spider
пока оставлю этот вопрос - я видимо все не в том порядке делал
Корочка
Ребята всем привет. Есть вопросик, не по Симфони. Мне нужно написать считывание штрих кода в режиме кода, не через монитор и все такое. Есть у кого какие мысли это сделать и есть ли вообще что нибудь для php?
Корочка
Вот это попробую для начала https://github.com/mkoppanen/php-zbarcode
Корочка
Если кому нужно будет. Вот это идеально работает https://githubhelp.com/tarfin-labs/zbar-php
Maksym
Всем привет. Подскажите пожалуйста, что должно хранится в context, а что в infrastructure?
Maksym
На сколько я понял, context - бизнес логика, то есть то, решает бизнес задачи нашего приложения, а infrastructure - реализация технических модулей. Например в контексте - отправка письма, а в инфраструктуре реализация работы з апи по отправке, например через gmail, или какой то другой вендор. Получается context более абстрактный слой, а infrastructure уже варианты конкретной реализации. Вот интересно, я прав или нет?
Maksym
ну вот domain это наверное и есть context
Maksym
а что в твоем понимании infrastructure?
Nikolay
а что в твоем понимании infrastructure?
Зависимости от базы, почты и другие служебные вещи
Maksym
спс
Денис
Товарищи, а кто-то может подсказать, такой момент. Я в тестах хочу достать из контейнера какой-то сервис, который, само собой, может потянуть за собой пару десятков зависимостей, друг в друге. И вот если мне нужно мокнуть один из классов, которые где-то глубоко в этом дереве сидят, придется создавать все это хозяйство вручную. Собственно, вопрос. Я хочу достать из контейнера что-то, а потом подменить где-то в дереве зависимостей один из классов. Нет ли уже какой-то либы или чего-то такого, что поможет мне это сделать? Просто собираюсь сам для себя такое написать, но мож уже есть готовое?
Konstantin
это порочная практика, по мне
Денис
чем?
Konstantin
тестировать надо используя моки, а не контейнер. иначе рано или поздно что-то изменится и вы в тестах (утрированно) отправите письма миллиону пользователей потому что ваш контейнер обновился (добавилась зависимость), а вы ее в совершенно других, не относящихся к ней, тестах забыли оверрайднуть
Денис
хм. ну да, звучит логично
Konstantin
я как-то пытался этим всем заниматься по молодости, тоже был отдельный services_test.yaml и я там постоянно с ним боролся. но по факту оказалось проще жить, если в тестах вообще никакого контейнера нет
Konstantin
по крайней мере, если речь о юнит-тестах
Konstantin
писать интеграционные тесты вида "сделал пост-запрос в такой-то урл, а мой EmailService отправил письмо на такой-то ящик" классно звучит на бумаге, а на деле требует чтобы ваш контейнер сплошь из моков состоял. и лучше бы автоматически 🙂
Денис
Ну у меня, в 90% случаев, как раз на тестах такого вида приходится мокнуть пару тройку классов, так как только они какие-то внешние вызовы совершают. И прикумаривает всякий раз это все создавать руками.
Gleb
А там ещё транспорт поспевает. А если транспорт ещё с миддлеваре) ад)
Nikolay
Не сталкивался с такими проблемами, мочите класс, зачем внутрь лезть к зависимостям
Gleb
Не совсем понял, это про майлер?
нет, это про суровый личный опыт, который я не осилил в тестах. Там через middleware в guzzle библиотеку инжектились заголовки. На уровне guzzle request.
Денис
Как раз для этого большие функциональные тесты и нужны
Ivan
Всем привет! Кто имеет опыт работы с doctrine odm? Вопрос следующий. Есть сущностью, у неё прописан relation через reference one. Я могу как-то получить id relation? Правильно я понимаю, что если я обращаюсь к relation и беру у неё id, то запрос на ее получение из бд уже ушёл?
Konstantin
только на ид (точнее связь) - нет
Konstantin
во вложенном объекте будет лежать пустой прокси с одним полем - ид. как пойдете за остальными, тогда да, отпрвится запрос в базу
Ivan
Идеально. Спасибо!)
Maxim
Добрый день, подскажите пожалуйста, есть ли какой-нибудь бандл для подобного? Нужна история аутентификаций с возможностью деавторизации выбранной сессии. Что-то вроде подобного =)
Maxim
Не хочется изобретать велосипед, если уже подобное есть, но отрыть ничего не удалось.
Павел
Товарищи, а кто-то может подсказать, такой момент. Я в тестах хочу достать из контейнера какой-то сервис, который, само собой, может потянуть за собой пару десятков зависимостей, друг в друге. И вот если мне нужно мокнуть один из классов, которые где-то глубоко в этом дереве сидят, придется создавать все это хозяйство вручную. Собственно, вопрос. Я хочу достать из контейнера что-то, а потом подменить где-то в дереве зависимостей один из классов. Нет ли уже какой-то либы или чего-то такого, что поможет мне это сделать? Просто собираюсь сам для себя такое написать, но мож уже есть готовое?
1) Если вы делаете юниты и вам нужно много зависимостей и DI - скорее всего делаете что-то не так. 2) Если вы делаете функционал, то надо юзать или реальные сервисы (если говорить о БД) ну или можно замокать в service_test - если не нужно что-то проверять внутри них 3) Можно мокать через $contaner->set('idService',$mock) только нужное и DI все хорошо сам соберет, не нужно собирать все древо вручную из-за 1 мока. 4) Если тест сложно пишется нужно проанализиировать структуру кода, скорее всего код не тестируемый, или посмотреть а нужен ли вообще тест такой ценой. Будет ли мега-критичной та ошибка, которая этот тест не покроет
Ivan
А кто-то использует компонент https://symfony.com/doc/5.4/messenger.html ? Были ситуации когда внутри одного хендлеар нужно выполнить другую команду?
Павел
Там есть какая то статья еще отдельная, но вроде про очередность то ли отслеживание. Но в целом проблем не наблюдал и без этого
Alexey Mishurovskiy
Всем привет! какой сейчас тренд на реализацию мультиязычности? последнее что я делал это использование xliff + прога poedit для редактирования переводов. Язык может быть и тайский и другие специфические языки.
Konstantin
у меня проекты на десятках языков и содержат тысячи строк, я, наверное, могу быть полезен. но для начала сформулируйте вопросы
Konstantin
вместо "проги poedit" я настоятельно рекомендую платформу вроде crowdin и небольшую обвязку вокруг него (скачать-залить). если надумаете его использовать, узнаете, что симфони трактует хлифф неправильно и системы перевода с ним не работают нормально. мы для себя решили перейдя на resx-формат. он из коробки не поддерживается, решилось сотней строк кода. но потеряли интеграцию с симфони-плагином в шторме - нельзя теперь по cmd + click провалиться в перевод
Alexey Mishurovskiy
А почему симфони неправильно xliff трактует ?
Konstantin
навскидку вроде так, но досконально не помню: в хлифф ид строки - это сама фраза
Konstantin
а в симфони - ее ид (и это правильно), но системы перевода об этом не знают и как-то там забавно ломаются
Konstantin
onesky, например, имеет отдельный формат symfony-xliff
Alexey Mishurovskiy
а вы в базовом языке делаете фразы, или же ключи ?
Konstantin
но остальные (мы все попробовали) не поддерживают
Alexey Mishurovskiy
я видел какие-то бандлы которые позволили делать переводы в web интерофейсе, но это было больно давно
Konstantin
я не думаю что в этом смысл есть
Konstantin
у нас каждое обновление переводов - это пуллреквест, который, в том числе, пруфридеры вычитывают. и код сайта жестко прибит к его переводам в данный конкретный момент. перевели новых строк - открыли пр - аппрувнули - задеплоили
Konstantin
если строки будут лежать в базе или типа того, ничего гарантировать вообще нельзя будет. в стейдже будут одни переводы, в проде другие, на деве третьи
Konstantin
поэтому у нас переводчики работают в краудине, потом говорят разрабам "стяни язык ххх для проекта ууу", разраб стягивает их скриптами, открывает пр ну итд
Konstantin
не считая того, что таким образом лишаетесь статик-анализа строк (пропущенные, лишние, процент переведенности) - словом, команда debug:translations
Konstantin
краудин, собственно, и есть такой веб-интерфейс. только его писать самим не надо, мощный и очень удобный для переводчиков
Alexey Mishurovskiy
от симфони нужно чтобы он сравнивал и выгружал непереведенные ключи
Konstantin
нет, краудин - это способ перевести. дальше в итоге в симфони у вас все равно попадают xliff/json/yaml/etc файлы со строками в нативном для симфони формате. то есть симфони не знает, откуда вы их взяли: перевели руками или откуда-то скачали