babacooll/imbrix

PHP项目的依赖管理器

v0.0.3 2015-04-28 17:55 UTC

This package is auto-updated.

Last update: 2024-09-12 04:21:16 UTC


README

SensioLabsInsight Scrutinizer Code Quality Code Coverage Build Status

Imbrix是一个针对小型PHP项目的完全单元测试的依赖管理器。

Packagist链接

仍在进行中

  • DependencyManager的包装器,以便通过单例方式获得对其的静态访问

安装

Imbrix可以通过composer获取

$ php composer.phar require babacooll/imbrix ~0.0.3

如何使用

你需要做的就是实例化一个新的DependencyManager

<?php

use Imbrix\DependencyManager;

$depManager = new DependencyManager();

此DependencyManager将包含你的服务和参数。

服务

你可以使用addService方法轻松添加你的服务,第一个参数是你的服务名称,第二个是返回你的服务的闭包

<?php

$depManager->addService('myService', function () {
    return new MyService();
});

你可以使用get方法检索你的服务

<?php

$depManager->get('myService');

参数

对于参数也存在相同的方法,第一个参数是你的参数名称,第二个是字符串值

<?php

$depManager->addParameter('myParameter', 'value');

你可以使用get方法检索你的参数

<?php

$depManager->get('myParameter');

注入

你可以将参数注入到服务中,将服务注入到服务中(需要多少次就注入多少次)。你只需要注入你想要注入的服务/参数的名称

<?php

// Injection of a parameter into a service

$depManager = new DependencyManager();

$depManager->addParameter('myParameter', 'value');
$depManager->addService('myService', function ($myParameter) {
    return new MyService($myParameter);
});

参数/服务的定义顺序不影响,因为当你调用get方法时,你的服务将在整个定义之后实例化(而不是之前)。

以下是一个更复杂的示例

<?php

$depManager = new DependencyManager();

$depManager->addParameter('myParameter', 'value');
$depManager->addService('myService', function ($myParameter) {
    return new MyService($myParameter);
});
$depManager->addService('mySecondService', function ($myService, $myParameter) {
    return new MySecondService($myService, $myParameter);
});

// We suppose MySecondService has both a getMyService() and a getParameter() method and the Service a getParameter()

echo $depManager->get('mySecondService')->getMyService()->getParameter();
echo $depManager->get('mySecondService')->getParameter();

// Both will return "value"

请随时提供反馈!