首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么PHPPSR-11容器不提供设置依赖关系的方法?

为什么PHPPSR-11容器不提供设置依赖关系的方法?
EN

Stack Overflow用户
提问于 2020-04-29 14:37:07
回答 1查看 205关注 0票数 2

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

代码语言:javascript
复制
public function __construct(string param, ?ContainerInterface $container = null)
{
    $this->param = $param;
    $this->container = $container;
}

现在,如果我想向容器中添加一个条目,如果规范没有提供一个通用的方法,我如何能够以一种跨不同的PSR-11容器实现兼容的方式来实现它呢?使用php-di,我只需调用set方法:

代码语言:javascript
复制
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)
}

退一步,应该如何在许多共同居住的库之间共享一个容器?我是不是遗漏了什么?我不认为每个库都有自己的容器实现是可取的。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-09 13:40:42

我无意中发现了同样的问题,而且也惊讶于set方法没有包括在内。

在本文中解释了原因:https://www.php-fig.org/psr/psr-11/meta/#31-goals

简而言之:容器接口的目标受众是库或框架的作者,而不是应用程序本身负责填充容器的具体应用程序的作者。这就是为什么没有setter方法的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61504435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档