artem
Dmitry
А в чем смысл? Я же могу его заинжектить
Первый смысл в контроле за другими программистами. Чтобы разрешить им только инжектить сервисы и не разрешать им дёргать то, что не нужно. Например, чтобы вообще запретить использование контейнера как сервис-локатора в основном коде проекта.
Второй смысл в оптимизации. При наличии в конфиге общих правил вроде App\: resource: 'src/*' контейнер Symfony сначала парсит и закидывает в себя все классы по маске, а потом производит очистку от лишних, оставляя только публичные сервисы и их зависимости.
Dmitry
А в чем смысл? Я же могу его заинжектить
Поэтому имеет смысл по умолчанию все сервисы делать приватными. А публичными объявить только контроллеры и сервисы с тегами, которые сам фреймворк или какие-нибудь CompilerPass-ы будут дёргать через container->get($class)
Юра
Php: я буду вечно
Perl: нуну
Юра
И вообще называть кого-то пхп кодером, это лэнгвизм и дискриминация )
artem
artem
Павел
Это контроллер) там прям Мейн
Так то и контроллер можно разделить, а в случае симфы - в экшенах инжектить.
Но в целом да, в таком кейсе не страшно
artem
artem
Юра
Это наверное джависты спрнгисты у которых нет инжекта в экшн метод
Юра
С другой стороны им и не нужно потому что контроллер один раз создаётся и висит в памяти всеравно все сервисы будут созданы рано или поздно
Юра
Грамотная иде подсветит неиспользуемые сервисы
Юра
Но я всеравно сторонник локальности
Nikolay
Павел
А как же интеграционные тесты?
Ну я например не вижу смысла тестить контроллер. Именно его его функционал, тестить что он вызвал экшен? Я проще протещу роут/апи на success, а для этого уже не надо собирать контроллер вручную
Павел
Тоже самое с консольной командой
Nikolay
Null
Павел
Юра
Павел
Павел
Ну точнее как, для симфы норм, а для архитектуры - не очень, так как сервис локатор
Юра
Я так понимаю основной плюс что симфони может понять какие сервисы не использьзуются и выпилиь их из контейнера или еще как-то оптимизировать
Юра
А если ты достаешь напрямую из контейнера то такое не прокатит
Юра
В том же спринге нет по-моему никаких сервис сабсрайберов и как-то норм живут
Nikolay
Nikolay
Есть сервис, который создается через фабрику. Этот сервис (инстанс из фабрики) нужно добавить в контейнер. Смотрел доку, не нашел примера как это можно сделать, наверное через ContainerConfigurator как то можно добавить. Подскажите пожалуйста какие варианты есть. Есть вариант сделать свой сервис и в нем это сделать, но чет не очень выглядит
Иван
Using a Factory to Create Services (Symfony Docs)
https://symfony.com/doc/current/service_container/factories.html
Иван
Nikolay
Посмотри ещё
Спасибо, немного забыл про этот вариант. Тут правда костыли со стороны вендора (фабрика возвращает еще одну фабрику)
Это от доктрины
либо прямо в методе объявляется, либо в конструкторе
$camelizedAction = InflectorFactory::create()->build()->classify($action);
$this->inflector = InflectorFactory::create()->build();
Пожалуй вариант со своей оберткой тут не так плох
artem
Немножко оффтопа) 32гб озу хватит для поднятия 50 инстанс докера?))
Null
С бузибоксом хоть 1000
artem
Null
На тупой вопрос был дан тупой ответ.
Busybox это минималистичный образ такой 😁 так-то логично, что у каждого образа свои системные требования
artem
Kirill
Всем привет. Подскажите, пожалуйста, почему может не выполняться миграция? Есть файл с миграцией, при запуске d m m пишет, что все миграции выполнены. В таблице с миграциями последняя миграция другая
Юра
Права на файл может не те?
Kirill
нет, такие же, как и у всех остальных
Павел
Kirill
artem
artem
Ничего более жизненного не видел
Sergey
Кто-нибудь использует DoctrineORM в kubernets? Есть какие-нибудь подводные камни с сессиями к бд? Я давно читал где-то что доктрина группирует сессии и транзакции, может тут есть потенциальные проблемы, если в кластере несколько активных одинаковых подов с доктриной?
Юра
Andrii
artem
Раз уж началась такая пьянка. Зачем и как едят кубер на локалке?
Dmitry
Юра
Юра
Докер не смог на проде стать главным. Поэтому стали ставить себе и на деве кубер
Kirill
Всем привет. Подскажите, пожалуйста, почему может не выполняться миграция, если она создана вручную? Я просто скопировал предыдущую миграцию и заменил в названии файла и в названии класса последнюю цифру. doctrine migration diff выполняется долго, поэтому я сделал так. И я часто так делаю, но случается, что такие миграции не выполняются.
Юра
может у тебя получилась невалидная дата после инкремента?
Юра
например 61 секунда
Kirill
нет, все в порядке, была 14, стала 16
Юра
Права на файл? Опечатка? Бог его знает )
Nikolay
Al
Всем привет. Можно ли провалидировать вложенный массив используя new Assert\Collection
?
Al
А если например у меня user содержит массив полей?
Kirill
я не пробовал, но по идее там можно же также Assert\Collection сделать
The Ant
Павел
Приветствую. Поделитесь плиз, кто как и куда логирует приложение завернутое в докер. В частности разделение аудит логов, от технической части?
Смотрю, основная практика - это все в stdout а потом считывание c /var/lib/docker/containers . Потом все это дело в логстеш, там фильтровать только логи приложения по какому то признакому?
Короче очень интересно послушать опыт и разные флоу :)
Vlad
"В частности разделение аудит логов, от технической части?" vector умеет. фильтровать логи/трансформировать в другой вид и тд
Andrii
Юра
Кстати кто не видел еще в тему логов https://wiki.php.net/rfc/redact_parameters_in_back_traces
Юра
SensitiveParameter аттрибут
Юра
Симфони его поддерживает
Kirill
Всем привет! Подскажите, что тут не так?
/**
* @Assert\All({
* @Assert\Type(
* HoursWorkedRequestDTO::class
* )
* })
*
* @Serializer\Type("array<App\Component\Accounting\DTO\HoursWorkedRequestDTO>")
*
* @Assert\Valid
*/
Приходит массив DTO и у HoursWorkedRequestDTO не работает валидация. То есть правила, которые описаны внутри HoursWorkedRequestDTO не проверяются
Павел
Vlad
А есть кто работал с центрифугой? Вопрос следующейго плана, а как отправить сообщение конкрентому пользователю? Сгенерил джвт с id и каналам, пытаюсь отправить и ничего не происходит на клиенте, а если отправить на весь канал сообщение, то все ок.
Vlad
Vlad