baublet/dependency-container

一个简单、符合PSR-4规范的依赖容器。

0.0.0 2017-04-17 14:16 UTC

This package is auto-updated.

Last update: 2024-09-29 04:42:42 UTC


README

Build Status

用于简单的依赖注入

为什么?

有时您需要在应用程序、插件或其他没有处理方式(例如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