jopic / jdi
简单的依赖注入框架
1.0.0
2015-03-29 08:58 UTC
Requires
- doctrine/common: *
- hafriedlander/phockito: 1.0.*
Requires (Dev)
- phpmd/phpmd: @stable
- phpunit/phpunit: 4.0.*
This package is auto-updated.
Last update: 2024-09-15 22:01:53 UTC
README
此仓库为PHP提供了一个非常基础且易于使用的依赖注入“框架”。
安装
您基本上只需要将以下依赖项 "jopic/jdi": "1.0.0"
添加到您的 composer.json
文件中。
用法 - 容器设置
首先,您需要设置您的依赖容器
$container = new Jopic\DI\Container();
然后,您可以通过以下方式将此容器设置为依赖注入的激活容器:
\Jopic\DI\DependencyInjection::getInstance()->setContainer($container);
用法 - 容器对象注册
为了能够将对象注入类字段,依赖注入容器需要知道关于可注入对象的信息。因此,您需要通过调用 register
方法在容器上注册它们。
$container->register("foo", function() {
return new DummyObject();
});
请注意:注册一个闭包函数(用于对象实例化)非常重要。
用法 - 对象注入
基本上,您只需要做以下三件事
- 扩展抽象类
JDIBaseClass
- 在您的类构造函数中调用
parent::__construct($this);
- 使用
@inject
注解您的类中的注入字段
以下是一个可注入类的简短示例
class SampleClass extends Jopic\DI\JDIBaseClass {
/**
* @inject
*/
private $foo;
public function __construct() {
parent::__construct($this);
}
}
此代码确保如果依赖注入容器中注册了名为 "foo" 的对象,则它将自动可用于此类的实例。
懒加载注入
如果您将属性定义为受保护的,则 JDIBaseClass 的类构造函数将自动以懒加载方式注入此属性。这意味着属性闭包仅在第一次使用属性之前执行。
以下是一个带有直接注入和懒加载属性的类的简短示例
class SampleClass extends Jopic\DI\JDIBaseClass {
/**
* this value gets injected on constructor call
* @inject
*/
private $foo;
/**
* this value gets injected just before the first getFoo2() call
* @inject
**/
protected $foo2;
public function __construct() {
parent::__construct($this);
}
public function getFoo() {
return $this->foo;
}
public function getFoo2() {
return $this->foo2;
}
}
评论请求
如果您发现任何错误,或者发现某些(或全部)不方便的地方,请通过 github 或电子邮件(admin [at] jopic.at)直接联系我。