Павел
Это разные фичи
The Ant
бля, получается так )
Павел
Можно брать страну и тренды по стране при регистрации, можно для локали из строки браузера. Это все детали фичи с трендами, но переводы тут не при чем
The Ant
я думал завязываться на локаль, но судя по всему это тупая затея
Павел
я думал завязываться на локаль, но судя по всему это тупая затея
У тебя есть локаль, но это не фича, это некий параметр системы. От него могут зависеть несколько фич
The Ant
в пхп еще так всрато всё сделано :( реквест в сервисы прокидывать западло, а в случае с языком локаль неоткуда больше получить. Тока если стейт хранить в сервисе. А он нахер там нужен
The Ant
как же я устал от всей этой херни...
Vlad
давай муравей, пиши убийцу symfony
The Ant
я не наркоман какой-то :D
The Ant
подкинь лучше идею как мне текущий язык из сервиса выплевывать, не сохраняя состояние этого языка
The Ant
в доке есть тупой метод завязаться на onKerner какое-то там событие а с другой, если запустить симфу не чистя стейт на каждый запрос, получится хуйня )
Павел
в доке есть тупой метод завязаться на onKerner какое-то там событие а с другой, если запустить симфу не чистя стейт на каждый запрос, получится хуйня )
В симфе до 6х какой то не было ЛокалСвитчера и только такой вариант, как установить локаль в сервисы которые от нее завсисят
Павел
Или написать свой свитчер
Павел
подкинь лучше идею как мне текущий язык из сервиса выплевывать, не сохраняя состояние этого языка
Храни и не парьсся) сервис завяжи на какой то resetInterface если думаешь в каком нить свуле запускать
The Ant
или не выебываться и прокидывать локаль с контроллера, как у меня щас. И работать с айдишками, а не объектами :D
Павел
Если в котороллере, так напиши аргумент резолвер который соберет тебе объект
The Ant
А в чем морока айдишников и объектов?
феншуй хз, `$userLang = $this->i18n->getCurrentLang()`и получить объект, ченить типа того. Оопошно модно молодежно
The Ant
проблема в производительности конечно же. Не охота на каждый вызов создавать новый объект.
Павел
проблема в производительности конечно же. Не охота на каждый вызов создавать новый объект.
Ну либо стейтфул и забиваешь хер на рекомендации. Либо тащишь через всю цепочку сервисов снаружи
Павел
Просто рекомендация рекомендации рознь. Да стейтфул не очень, но оно тебе чем то мешает или помешает? А профита даст? И чего из этого больше?
Павел
Например если тот же роадраннер брать, там же не паралельные запросы идут, а последовательные. Просто сервисы надо чистить между запросами, через тот же resetInterface или еще как вручную
Павел
Те же логеры вроде батчем работают и стейт хранят
Павел
Короче хранить стейт не прям верх гавна, главное чтобы он в тебя не стрелял
The Ant
логгеры настраиваются, если это монолог )
Павел
муравей это копейки
У него там запросы в БД
Vlad
У него там запросы в БД
ну пускай в кэш кладет епт
Павел
Хоть и кэш но все равно нафига
The Ant
муравей это копейки
если один раз создается то да, если много, то уже нет )
Павел
ну пускай в кэш кладет епт
ну кэш свои проблемы дает - проблему инвалидации кэша + сетевые запросы )
The Ant
ну пускай в кэш кладет епт
сериализовать объект? это дороже чем просто создавать :D
The Ant
а модифицировать реквест дто сильно всратая идея? )
The Ant
в контроллере
Vlad
да нет. если иммутабл
Павел
а модифицировать реквест дто сильно всратая идея? )
Кстати, если у тебя Lang можно создать из того что приходит в реквесте, то почему бы просто не засунуть объект Lang в ДТО и все автоматом десериализуется?
The Ant
Кстати, если у тебя Lang можно создать из того что приходит в реквесте, то почему бы просто не засунуть объект Lang в ДТО и все автоматом десериализуется?
хз, попробую просто логика определения языка и создание реквест дто в разных местах как это дружить пока не понятно
Павел
хз, попробую просто логика определения языка и создание реквест дто в разных местах как это дружить пока не понятно
Пишешь денормалайзер на свой объект Lang, этот денормалайзер дергает твой резолвер
Павел
В денормалайзер прилетает строка из реквеста, суешь ее в свой резолвер, получаешь Lang - отдаешь на выход
Евгений
Друзья, всем мир! Подскажите пожалуйста, кто сталкивался с проблемой при настройке xdebug в phpstorm при работе с docker, такого рода: в settings -> php -> cli interpreter -> docker-compose в окне появляется такая ошибка Error while parsing "/home/evgen/IT/projects/docker/...";com.intellij.docker.agent.ApiTaskException:com.intellij.execution.process.ProcessNotCreatedException: Cannot run program "docker-compose" (in directory "/home/evgen/IT/projects/docker/..."): error=2, Нет такого файла и каталога
Евгений
Doctor
docker-compose точно установлен? Пользователь добавлен в группу docker?
Юра
Похоже в проекте нет файла docker-compose.yml
Евгений
Установлен, добавлен, есть.
Евгений
Configuratio file на скриншоте
Юра
А сам docker-compose стоит?
Юра
Вообще по-моему в новом докере он идёт с самим докером, т.е. docker compose ...
Юра
Это раньше он ставился отдельно
Null
И щас ставится отдельно
Null
Просто не отдельным пакетом, а плагином.
Евгений
стоит, я проверил
Евгений
не понял после чего, но ошибка изменилась - в конце не нет такого файла, а отказано в доступе
Юра
Богдан это с правами юзера связано
Евгений
Друзья! Вы все используете docker и phpstorm?
S.
Друзья! Вы все используете docker и phpstorm?
Да, но, каюсь, openserver тоже есть
The Ant
https://github.com/symfony/symfony/blob/9a0f178c5324c6ee7a3d99fe4fb7ef31b454925c/src/Symfony/Component/Translation/LocaleSwitcher.php#L41 Это чо получается, RequestContext можно без зазрения совести юзать в сервисах? )
Vlad
Муравью разрешаю
The Ant
ну вон видишь юзают, и не жужжжат
Vlad
Во фреймворке стока всего используется, крч это не ориентир на хороший код
The Ant
потом с этого контекста в контроллер пробрасывают аргументы
The Ant
симфа кстати не реагирует на Accept-Language, лол
Павел
https://github.com/symfony/symfony/blob/9a0f178c5324c6ee7a3d99fe4fb7ef31b454925c/src/Symfony/Component/Translation/LocaleSwitcher.php#L41 Это чо получается, RequestContext можно без зазрения совести юзать в сервисах? )
Ну это же фреймовская штука, тут уже каждый решает за себя. Тут они "наверное" делают, чтобы система была в синхронном состоянии и потом не жужали, что в одном месте после сервиса одна локаль, а в другом другая. Тут основное что пробегается по всем сервисам и ставится локаль
Павел
runWithLocale даже сахарок прикрутили)
Павел
В других языках не западло прокидывать контекст в сервис. Это в пыхе чето ебалы кривят
контекст чего, запроса? Если запроса то выглядит коряво, независимо от языка
The Ant
Вот делаешь ты стейтлесс сервис, и риквеста у тебя нету. В чем прикол то?
Павел
Но всегда можно писать коряво если это профитно
Павел
Вот делаешь ты стейтлесс сервис, и риквеста у тебя нету. В чем прикол то?
А в чем прикол зависеть от реквеста? Приложуха может работать в cli, может в воркере (ну тоже cli)
Павел
Если ты пишешь сервис 100% под реквест фрейморка и для этого флоу, то почему бы и не зависеть
Павел
Но опять же слишком абстрактная и жирная зависимость
The Ant
А в чем прикол зависеть от реквеста? Приложуха может работать в cli, может в воркере (ну тоже cli)
Не зависеть, а знать о том что пришло извне. Вот например мне нужен сервис, который определит язык в том числе по заголовку хттп. И блять, кроме как в контроллере я это сделать не могу, потому что будет типа хуевый код
Павел
Тут проблема в том, что сможешь ли ты потом распедалить этот код, если он не в реквесте будет и как
The Ant
Уже не сделаешь, если будешь пользоваться встроенным резолвером через атрибуты.
The Ant
Я про резолвер который был у тебя в начале
Ну это всратая штука наскоряк написана. Чтоб разруливать языки с локали из контроллера