composepress / dice
一个用于PHP的极简依赖注入容器(DIC)。请注意:此分支仅与PHP5.6兼容。5.5、5.4和5.3的兼容版本可在GitHub上的单独分支中找到。
0.6.4
2019-07-30 07:06 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-29 04:49:38 UTC
README
Dice是一个专注于轻量、快速,并且尽可能少配置的PHP依赖注入容器。
项目目标
1) 轻量级,不是由数十个文件组成的庞大库(Dice是一个100行的单个类),同时支持比更复杂的容器提供的所有功能(更多)
2) “只需工作”。基本功能应该无需配置即可使用
3) 当需要配置时,它应该尽可能最小化和可重用,同时易于使用。
4) 速度!
安装
只需将轻量级的Dice.php包含到您的项目中,即可使用而无需任何其他配置
简单示例
<?php
class A {
public $b;
public function __construct(B $b) {
$this->b = $b;
}
}
class B {
}
require_once 'Dice.php';
$dice = new \Dice\Dice;
$a = $dice->create('A');
var_dump($a->b); //B object
?>
完整文档
请参阅Dice PHP依赖注入容器主页以获取完整文档
PHP版本兼容性
Dice与PHP5.4及更高版本兼容,有Dice的存档版本支持PHP5.3,但不再维护。
致谢
最初由Tom Butler (@TomBZombie) 开发,感谢daniel-meister (@daniel-meister)、Garrett W. (@garrettw)、maxwilms (@maxwilms) 对错误修复、建议和改进所做的贡献。
更新
29/10/2014
- 基于问题 #15,Dice现在将仅在它们被\Dice\Instance包裹时调用闭包。**请注意:这是向后不兼容的**。
之前Dice运行了作为替代方案传递的闭包,构造函数参数以及调用方法时
$rule->substitutions['A'] = function() {
return new A;
};
$rule->call[] = ['someMethod', function() {
// '2' will be provided as the first argument when someMethod is called
return 2;
}];
$rule->constructParams[] = function() {
//'abc' will be providedas the first constructor parameter
return 'abc';
};
此行为已更改,因为它使得无法提供闭包作为构造函数参数或调用方法,因为闭包总是被调用并执行。
为了克服这一点,Dice现在只有在它们被\Dice\Instance包裹时才会调用闭包
$rule->substitutions['A'] = new \Dice\Instance(function() {
return new A;
});
$rule->call[] = ['someMethod', new \Dice\Instance(function() {
// '2' will be provided as the first argument when someMethod is called
return 2;
}]);
$rule->constructParams[] = new \Dice\Instance(function() {
//'abc' will be providedas the first constructor parameter
return 'abc';
});
04/09/2014
- 将PHP5.6分支推送到线上。这比使用PHP5.6特性的版本稍微高效一些。对于PHP5.4-PHP5.5,请参阅相关分支。此版本将在PHP5.6更广泛时维护。
26/08/2014
- 添加了PHP5.6分支。通过使用PHP5.6特性整理了代码。PHP5.6发布时将移至master分支
28/06/2014
- 大幅提高了效率。Dice现在成为PHP最快的依赖注入容器!
06/06/2014
- 添加了对循环引用的支持(https://github.com/TomBZombie/Dice/issues/7)。请注意,这是糟糕的设计,但此修复将阻止由这种设计创建的无穷循环。
27/03/2014
- 已删除assign()方法,因为它与使用$rule->shared可用的功能重复
- 已删除$dice->create()中的$callback参数,因为此功能的唯一真正用途可以更好地使用$rule->shareInstances实现
- 整理了代码,移除了未使用/未记录的功能。Dice现在更加轻量级且快速。
- 修复了一个错误,即当使用$rule->call时,它会在每个方法调用时使用构造函数中的替换规则
- 更新了Dice文档以使用简写数组语法
01/03/2014
- 为Xml Loader和Loader Callback类添加了测试用例
- 添加了JSON loader + 测试用例
- 将所有测试用例添加到测试套件中
- 移至PHP5.4数组语法。PHP5.3兼容版本现在可在PHP5.3分支中找到。
- 修复了使用命名实例时,每次创建类都会触发自动加载器并使用无效类名的问题
28/02/2014
- 增加了基本命名空间支持。文档更新将随后进行。此外,已将XML加载器移入自己的文件中,如果您使用它,需要单独包含。
- 请注意:变更不支持向下兼容。但是,通过以下查找/替换操作可以轻松修复:
new Dice => new \Dice\Dice
new DiceInstance => new \Dice\Instance
new DiceRule => new \Dice\Rule