2015-06-18 2 views
1

Пожалуйста, есть ли быстрый способ получить доступ к сервису monolog в службе an_other_service, не передавая ссылку на монологическую службу в качестве аргумента от контроллера?Монолог Пользовательский доступ к услугам из службы

Я создал собственный монологический канал, который записывается в определенный файл журнала. Обычно в контроллере я получаю свой монолог таможенной службы с

$this->logger = $this->container->get('monolog.logger.test'); 

На данный момент у меня есть свой сервис журнала пользовательских проходящее экземпляр регистратора в качестве аргумента, когда я называю метод an_other_service службы. Быть в службе a_other_service Есть ли явный способ получить доступ к пользовательскому монологу? и к обычной монологической службе?

ответ

1

вводят сервис в ваш сервис.

class ServiceCustom 
{ 
    private $logger; 

    public function setLogger(YourLoggerClass $logger) 
    { 
     $this->logger= $logger; 
    } 

    // ... 
} 


services: 
    service_custom: 
     class:  Namespace/ServiceCustom 
     arguments: [] 
     calls: 
      - [setLogger, ["@monolog.logger.test"]] 

Documentation

+0

Я благодарю вас за ответ, но это не возможно в моем случае, потому что я пытаюсь использовать монолог в существующем проекте, где существует предопределенные классы и услуги. Слишком сложно добавить такую ​​строку в конструктор классов, которые расширяют другие классы, расширяющие другие ... и у меня нет четкой всей части определения службы этого кода проекта. –

+0

, если это соответствует вашим потребностям, вы можете использовать простой метод для ввода услуги, см. Мое редактирование. – goto

+0

Вы абсолютно правы. Еще раз спасибо. –

Смежные вопросы