sciactive/requirephp

PHP 中依赖注入(类似 RequireJS)的实现。

1.3.0 2015-02-19 00:00 UTC

This package is auto-updated.

Last update: 2024-09-07 15:08:06 UTC


README

Latest Stable Version License Total Downloads Open Issues

PHP 中依赖注入和服务定位器(类似 RequireJS)的实现。

安装

您可以使用 Composer 或 Bower 安装 RequirePHP。

composer require sciactive/requirephp

bower install https://github.com/sciactive/requirephp.git

入门

如果您不使用自动加载器,您只需要包含 RequirePHP.php 文件。

require("RequirePHP.php");

现在您可以从需要模块(或多个模块)运行的代码开始。这些代码将不会运行,直到所有必需的模块(在本例中,只有 'test')都可用。

\SciActive\RequirePHP::_(array('test'), function($test){
	$test->value = '<p>Hello, world.</p>';
});

您可以定义模块。此模块没有依赖关系,因此数组为空。

\SciActive\RequirePHP::_('test', array(), function(){
	class test {
		public $value;

		public function talk() {
			echo $this->value;
		}
	}

	// Returning a new instantiation is important if you are
	// providing a service.
	return new test();
});

您可以创建模块(和其他别名)的别名。

\SciActive\RequirePHP::alias('testing', 'test');

您可以在其他代码中使用相同的实例,使用 RequirePHP 作为服务定位器。此函数使用上面的别名。

\SciActive\RequirePHP::_(array('testing'), function($test){
	$test->talk(); // Prints '<p>Hello, world.</p>'.
});

您还可以在闭包之外检索模块。但是,如果在此请求模块时该模块不可用,RequirePHP 将抛出 RequireModuleFailedException。这就是不使用闭包的代价。

$test = \SciActive\RequirePHP::_('test');
$test->talk(); // Prints '<p>Hello, world.</p>'.

服务定位

该存储库包含使用 RequirePHP 作为服务定位器的一个示例

依赖注入

该存储库包含使用 RequirePHP 作为依赖注入器的一个示例

联系开发者

有几种方式可以联系 RequirePHP 的开发者,以提出您的问题、担忧、评论、错误报告或功能请求。