если я разрабатываю библиотеку, которая хочет использовать в своих интересах контейнер зависимостей, я думаю, что контейнер 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)
}
Делая шаг назад, каким должен быть способ разделения контейнера между многими библиотеками, которые живут вместе? Я что-то пропустил? Я не думаю, что желательно, чтобы каждая библиотека имела свою собственную реализацию контейнера.
Заранее спасибо.