一个简单且灵活的 PHP 依赖注入容器。

1.0.1 2013-07-13 19:54 UTC

This package is auto-updated.

Last update: 2024-08-29 00:28:42 UTC


README

A simple and flexible Dependency Injection or Service container for PHP.

它可以非常有助于解耦您的依赖。您还可以在运行时模拟依赖。

安装

Viocon 使用 Composer 来简化流程。

学习如何使用 Composer 并将其添加到 require(在您的 composer.json 中)

"usmanhalalit/viocon": "1.0.*@dev"

Packagist 上的库。

用法

$container = new \Viocon\Container();

您还可以选择创建一个类别名

new \Viocon\Container('Container');

Viocon 会为您创建一个名为 'Container' 的类别名。现在您可以使用这个类的静态方法,例如

\Container::set(...);
\Container::build(...);

然后...

绑定一个闭包

$container->set('myClosure', function ($test1, $test2) 
{
    $stdClass = new \stdClass();
    $stdClass->testVar1 = $test1;
    $stdClass->testVar2 = $test2;
    $stdClass->testMethod = function ($test3) {
        return $test3;
    };

    return $stdClass;
});

$object = $container->build('myClosure', array('Test Var 1', 'Test Var 2'))

echo $object->testVar1;

构建任何类并可选地传递参数

$container->build('\PDO', array('myConnectionInfo'));

单例

$container->set('mySingleton', '\\stdClass');
$stdClass = $container->build('mySingleton');

在运行时替换对象

在测试时使用模拟对象时非常有用

$mockedClass = new \stdClass();
$mockedClass->testVar = 'mocked';

static::$container->setInstance('\\stdClass', $mockedClass);

$stdClass = static::$container->build('\\stdClass');
$this->assertEquals('mocked', $stdClass->testVar);