usmanhalalit / viocon
一个简单且灵活的 PHP 依赖注入容器。
1.0.1
2013-07-13 19:54 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
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);