Yuri
а почему ты решил что я не чистил кеш?
я не решил, я предположил.
Anton 🐻
посоны, подскажите. есть классы, у них есть метод setDebug(true) вот как бы удобнее сказать контейнеру чтобы он вызвал этот метод, при условии что передан, например, get-параметр debug=true.
Anton 🐻
Што ето?
Yuri
Што ето?
https://symfony.com/doc/current/service_container/compiler_passes.html
Yuri
посоны, подскажите. есть классы, у них есть метод setDebug(true) вот как бы удобнее сказать контейнеру чтобы он вызвал этот метод, при условии что передан, например, get-параметр debug=true.
но вообще странная идея. для чего если не секрет? можно же просто переключить на сервере окружение с prod на dev и глянуть ошибку
Anton 🐻
нужно на проде смотреть трейс некоторых запросов
Anton 🐻
можно по гет-параметру на лету менять окружение?
Alexander
Можно все, но не знаю насколько хорошая практика так делать. В index.php проверку можно добавить
Anton 🐻
не, не вариант
Anton 🐻
1) классы ничего не знают об окружениях симфы 2) большая часть функционала уже сделана через setDebug(true). проблема в том что иногда люди забывают это вызвать и отладчик показывает не всё
Alexander
Ну можно тогда какой нибудь Листенер написать и там дергать у твоих сервисов этот метод
Alexander
@saintnox
Yuri
нет
Yuri
просто если проект на костылях , то + один костыль не помешает Просто костыль - потому что, просто задумайтесь, чтобы включить дебаг нужно 1) Создать EventClass + EventListener + вкорячить это в конфигурацию. Хотя Symfony вроде дает свои готовые инструменты. И фраза - "Классы ничего не знают об окружении симфони" не понятна если честно
Yuri
ну в целом не сарказм
Yuri
а какая версия симфони ?
Yuri
только не говори что 3.4 или 4
Alexander
Ну как бы понятно что костыль, я просто накидываю варианты человеку что с этим можно сделать, раз уж так получилось и так нужно
Anton 🐻
Конечно же 34
Anton 🐻
Кроме как передать им $debug=true
Alexander
а через чего они выводят?
Alexander
логгер какой-то один или они сами пишут куда то
Yuri
echo
Yuri
скинь пример кода плиз
Yuri
просто не понятно почему такая задача возникла
Anton 🐻
логгер какой-то один или они сами пишут куда то
Каждый делает это по своему, но по сути echo.
Alexander
Каждый делает это по своему, но по сути echo.
Хреново, было бы проще, если бы за это отвечал конкретный сервис и можно было бы ему скормить уже окружение
Alexander
а он бы уже сам там разбирался, выводить или не выводить
Максим
https://freelancehunt.com/r/oW5EK
Anton 🐻
Скажи это автррам всех либ с гитхаба. Им просто похер на это, кодят как хотят
Yuri
окружение можно скормить любому сервису через конфигурацию
Yuri
есть DI, а в 3.4 есть еще и autowiring
Yuri
я без приколов или ухмылок, просто размышеления, если чего
Alexander
автовайринг в 2.8 ещё появился)
Yuri
а то в сообщениях эмоций не видно, поэтому поясняю
Yuri
ну да, просто тут 3.4
Anton 🐻
Но плюс минус всем либам можно передать флаг дебага либо через конструктор либо через метод
Anton 🐻
Но нужно тригернуть включения дебага по приходу гет параметра, например
Alexander
я бы сделал всё таки один сервис, который бы логировал в нужном виде, инъектил его в нужные мне сервисы, и в конкретных сервисах вызывал бы что-то типа $logger->log(), причем логгер бы внутри себя проверял, если окружение - дев (или есть гет параметр debug=true), то выводим
Yuri
Но нужно тригернуть включения дебага по приходу гет параметра, например
ну юзай листенер, все ж верно сказал @quantk Подпишись на событие Request https://symfony.com/doc/current/event_dispatcher/before_after_filters.html
Yuri
вот твое решение
Yuri
Смотри на GET и юзай
Yuri
но кто-нить тоже передаст тебе в GET debug = true
Yuri
и увидит все потроха
Anton 🐻
Не передаст
Yuri
вообще вот общий подход к окружениям https://symfony.com/doc/3.4/debug/debugging.html
Yuri
тут тебе и дебаг панель будет видна
Yuri
а в ней все что нужно
Anton 🐻
Как заставить сторонние либы срать в эту панель если в их коде echo?
Alexander
адаптер напиши
Alexander
или декоратор какой
Anton 🐻
Но зачем мне этот геморой? Ради чего? Какой профит?
Yuri
ну профит в общем подходе, чтоб потом не париться вот так как ты щас
Yuri
или потом кто-то после ) как ты щас )
Yuri
ну в целом есть логика в твоих словах
Yuri
удобно просто когда в панельке все
Yuri
а потом зачем echo ? cli mode ?
Yuri
это консольное приложение ?
Anton 🐻
Цель - предотвратить человеческий фактор по забыванию прокидывать. Debug=true в классы. Чтоб оно саио вызывалось для классов из контейнера по определённому триггеру
Anton 🐻
Это json api
Yuri
ну тогда лучше не в гет а в теле запроса уж передавать (если POST, PATCH, PUT, DELETE)
Yuri
хотя смысл такой же
Yuri
лан я свалил, парни, сорян )
Yuri
)
Anton 🐻
Я пока не вкурил как он мне поможет
Yuri
ты хоть кусок кода бы скинул где ты хочешь это применить
Alexander
проставит setDebug(true) там где нужно
Alexander
достав из Request твой триггер
Yuri
просто смотришь, если degub true $container->get('service_echo')->setDebug(true);
Yuri
хотя это тож так себе )