Почему PHP PSR-11 Container не предоставляет методы для установки зависимостей? - PullRequest
0 голосов
/ 29 апреля 2020

если я разрабатываю библиотеку, которая хочет использовать в своих интересах контейнер зависимостей, я думаю, что контейнер implementation (php -di, symfony / dependency-инъекции и т. Д. c.) Должен быть решен библиотекой Пользователь, который, в конце концов, передает его мне, например, в конструкторе моих классов, следующим образом:

public function __construct(string param, ?ContainerInterface $container = null)
{
    $this->param = $param;
    $this->container = $container;
}

Теперь, если я хочу добавить запись в контейнер, как я могу сделать это в способ, который совместим с различными реализациями контейнера PSR-11, если в спецификации не предусмотрен общий метод? С php-di я бы просто назвал метод set:

public function __construct(string param, ?ContainerInterface $container = null)
{
    $this->param = $param;
    $this->container = $container; // I know it's a php-di container
    $myDependency = Factory::buildMyDependency(); // dependency not instantiable through "new" keyword
    $this->container->set(MyDependency::class, $myDependency)
}

Делая шаг назад, каким должен быть способ разделения контейнера между многими библиотеками, которые живут вместе? Я что-то пропустил? Я не думаю, что желательно, чтобы каждая библиотека имела свою собственную реализацию контейнера.

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

...