monotek/dependency-inject

经过验证和测试的PHP最小化依赖注入

v1.0.1 2016-09-03 13:42 UTC

This package is not auto-updated.

Last update: 2024-09-21 09:22:07 UTC


README

简单来说,这个包包含两个类。类Dependency处理依赖和资源的定义。类Inject处理在实例化对象时自动注入已定义的依赖。

定义一个依赖就像这样简单

Dependency::set("database", function($param = false) {
	return new Database();
});

使用一个依赖就像这样简单

class UsesDatabase extends Inject
{
	public $inject = array("database");
	public function process()
	{
		$db = $this->getDatabase("param");
	}
}

定义的依赖将仅在它们实际使用时创建实例。如果依赖未被使用,则不会实例化,以使执行PHP代码时的开销尽可能小。

允许向依赖传递参数。这样,您可以使用一个实用依赖实例化器,该实例化器会根据参数返回数据。

如果您想在实例中覆盖一个依赖

$object->setDatabase($object_or_callback);

每次调用getDatabase都会返回该调用的结果或传递给setDatabase的值。

请参阅单元测试以获取更多使用此包的示例。

2014 (c) Tit Petrič, Monotek d.o.o.