Предоставить инъекционный объект в качестве аргумента сервисам - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь динамически дать службе Logger имя разрешающего класса (или самого экземпляра разрешающего класса), используя внедрение зависимостей, как указано в приведенном ниже коде.Возможно ли это даже с помощью Symfony DI, я не смог найти решения для этого.

Заранее спасибо!

services.yml

services:
    // ...
    MyLogger\Logger:
        arguments: ["%className%"] // is it possible to do sth. like this?

Logger.php

class Logger
{
    public function __construct(string $className)
    {
        $this->className = $className;
    }

    public function log(string $message)
    {
        echo "{$this->className}: {$message}";
    }
}

MyClass.php

use MyLogger\Logger;

class MyClass
{
    public function __construct(Logger $logger)
    {
        $this->logger = $logger;
    }

    public function getFoo()
    {
        // Should echo: "MyClass: Called getFoo()"
        $this->logger->log("Called getFoo()");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...