2

如果我开发一个想要利用依赖容器的库,我认为容器implementation(php-di、symfony/dependency-injection 等)应该由库的用户决定,最终将它传递给我,因为我的类的构造函数中的示例,如下所示:

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)
}

退一步说,在许多共同生活的库之间共享容器的方式应该是什么?我错过了什么吗?我不认为每个库都有自己的容器实现是可取的。

先感谢您。

4

0 回答 0