baublet / dependency-container
一个简单、符合PSR-4规范的依赖容器。
0.0.0
2017-04-17 14:16 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-29 04:42:42 UTC
README
用于简单的依赖注入
为什么?
有时您需要在应用程序、插件或其他没有处理方式(例如WordPress)的系统中跨越依赖项。因此,将此项目作为子模块包含在内,并随意将依赖项注入到您的类中。当您不想在构造函数中污染大量依赖项时,请使用容器。
此容器也仅在类尝试访问相关的依赖项时加载依赖项。这就是为什么我们的所有注入都声明为函数的原因。有关更多信息,请参阅以下内容。
它是PSR兼容的,实现了(建议的)容器接口,用于API。如果接口中的API发生变化,我将更新这些以匹配。
这意味着此API可能会更改,因此在升级之前请阅读任何文档。
安装
将 baublet/dependency-container
添加到您的 composer.json
文件的必需包部分,或者,从命令行
composer require baublet/dependency-container
示例
我尝试使API相当简单。首先,需要容器模块并声明一个新的容器。
use baublet\DependencyContainer\DependencyContainer; $dependencies = new DependencyContainer();
依赖项声明为函数,这样您就可以确保仅在调用时加载依赖项。这允许您使用此容器作为特定模块的依赖项注册表,当调用时,可能或可能不使用所有依赖项。
要声明依赖项
$constructor = "This will be passed to the function as $args"; $dependencies->set("my-dependency", function($args) { require_once("some/big/dependency/class.php"); return new SomeBigDependencyClass($args); }, $constructor);
在上面的代码中,some/big/dependency/class.php
仅在需要时引入,并且仅在调用 $dependencies->get("my-dependency");
时初始化 SomeBigDependencyClass
。
测试
此代码使用Travis CI和平面PHP断言进行测试。无需测试框架。只需进入测试目录并运行测试即可
php test.php