Пользовательский пакет Symfony 4 использует интерфейс регистратора

Я пытаюсь реализовать собственный пакет Symfony, и внутри моего сервиса мне нужно передать глобальный логгер Symfony, который я определил в своем приложении Symfony, и это экземпляр Psr \ Log \ LoggerInterface. Проблема в том, что когда я настраиваю свои службы с помощью ContainerBuilder, служба регистратора еще не инициализирована.

В моем пакете услуг я передаю Регистратору вот так:

public function __construct(LoggerInterface $logger, $argument1, $argument2);

Два аргумента доставляются из файла packages / my_custom_bundle_config.yaml. Однако я не могу передать регистратор приложения в качестве параметра даже в приведенном выше файле конфигурации.

Будем очень признательны за любую помощь или комментарии.

Спасибо.

Можете уточнить, почему вы не можете пройти регистратор? У вас есть исключение? Вы можете отправить сообщение? Как выглядит ваша конфигурация?

dbrumann 11.09.2018 05:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
441
1

Ответы 1

Вам нужно сделать три вещи:

  1. Создайте проход компилятора. Вы можете поискать их в документации. По сути, они позволяют вам изменять контейнер непосредственно перед его компиляцией, когда все определения и псевдонимы были зарегистрированы.

  2. Это действительно хорошая практика в вашем классе конфигурации, чтобы определить идентификатор службы для регистратора, если ваши пользователи хотят использовать другую реализацию. В вашем классе расширения вы должны передать эту ссылку в качестве аргумента.

  3. Обычно все пакеты, которые полагаются на интерфейсы psr, регистрируют его псевдоним для реализации по умолчанию. Их обычно называют logger.default или что-то подобное. Вы можете искать в классе расширения пакета monolog определения, которые они используют, или использовать интерфейс, у которого будет псевдоним.

Другие вопросы по теме