gpt4 book ai didi

php - 认识疙瘩

转载 作者:IT王子 更新时间:2023-10-29 00:17:21 26 4
gpt4 key购买 nike

我不明白这个“DI容器”是怎么用的。官方网站上显示的示例没有告诉我任何信息:http://pimple.sensiolabs.org

基本上我有一个简单的站点,它由一组类组成:DB 类、Cache 类、User 类和其他一些处理内容类型的类。

所有这些类就像Pimple中提到的“服务”,每个服务都应该能够调用另一个服务。现在我正在一个主类中实例化服务,我像单例一样使用它来在其他类之间共享服务。

根据我的阅读,Pimple 正是做这类事情的,但我该如何使用它呢? :s

最佳答案

http://phpmaster.com/dependency-injection-with-pimple/ 有教程解释如何将 Pimple 用作 DIC。

另一种(但不一定推荐)方法是将容器注入(inject)到所有需要它的组件中(例如,您像使用 ServiceLocator 一样使用它),然后按照文档中的说明从 Pimple 获取对象:

class SomeClassThatNeedsSession
{
private $session;
public function __construct(Pimple $container)
{
$this->session = $container['session'];
}
}

换句话说,你只需要获取你需要的和Pimple will handle the lifetime of that object, e.g. whether it needs to be created or is reused . OffsetGet 是 ArrayAccess 接口(interface)的一部分,它允许您像访问数组一样访问对象,因此当您执行此操作时,$container['foo'] Pimple 将检查它是否具有为 foo 定义的闭包是否只是一些参数并相应地组装服务。

疙瘩是 blog post about Lambdas and Closures 的结果您可能想要阅读以更好地了解其工作原理。

关于php - 认识疙瘩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10685307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com