Ann*_* K. 16 php dependency-injection
我不明白这个"DI容器"是如何使用的.官方网站上显示的例子告诉我什么:http://pimple.sensiolabs.org
基本上我有一个简单的站点,它由一组类组成:DB类,Cache类,User类和一些处理内容类型的类.
所有这些类都像是在Pimple中提到的"服务",每个服务都应该能够调用另一个服务.现在我正在实例化主类中的服务,我使用它像单例一样在其他类之间共享服务.
从我读到的内容来看,Pimple确实做到了这一点,但我该如何使用呢?:■
Gor*_*don 19
http://phpmaster.com/dependency-injection-with-pimple/上有一个教程,解释如何将Pimple用作DIC.
另一种(但不一定是推荐的)方法是将容器注入到需要它的所有组件中(例如,你像ServiceLocator一样使用它)然后你只需要做文档说你应该做的事情来从Pimple获取一个对象:
class SomeClassThatNeedsSession
{
private $session;
public function __construct(Pimple $container)
{
$this->session = $container['session'];
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,您只需获取所需内容,然后Pimple将处理该对象的生命周期,例如是否需要创建或重用它.OffsetGet是ArrayAccess接口的一部分,它允许你像一个数组一样访问一个Object,所以当你做的时候,$container['foo']Pimple将检查它是否有一个为foo定义的闭包,它是否只是一些参数并相应地组装服务.
Pimple是关于Lambdas和Closures的博客文章的结果,您可能希望阅读它以更好地理解它是如何工作的.
| 归档时间: |
|
| 查看次数: |
10579 次 |
| 最近记录: |