okeyaki / pimple-di
此包已被放弃,不再维护。未建议替代包。
将依赖注入(DI)功能与Pimple集成。
1.0.1
2017-12-20 04:39 UTC
Requires
- pimple/pimple: ^2.0|^3.0
Requires (Dev)
- symfony/phpunit-bridge: ^3.2
This package is not auto-updated.
Last update: 2020-01-24 16:41:54 UTC
README
Pimple DI 将依赖注入(DI)功能与 Pimple 集成。
特性
- 将依赖注入(构造函数注入)功能与 Pimple 集成。
- 易于使用。
安装
将 okeyaki/pimple
添加到您的 composer.json
文件中
$ composer require okeyaki/pimple-di
使用
首先,创建一个 Pimple\Container
的子类并混入 Okeyaki\Pimple\DiTrait
class Container extends \Pimple\Container { use \Okeyaki\Pimple\DiTrait; }
然后,创建该类的实例
$container = new Container();
构造函数注入
Pimple DI 会根据构造函数参数的类自动解决依赖。
class Foo { } class Bar { private $foo; public function __construct(Foo $foo) { $this->foo = $foo; } public function foo() { return $this->foo; } } $foo = $container[Foo::class]; $bar = $contaienr[Bar::class]; $bar->foo();
类绑定
您可以将类绑定到现有ID。
class Foo { } $container['foo'] = function () { return new Foo(); }; $container->bind(Foo::class, 'foo'); $foo = $container[Foo::class];
这对于使用 Silex 自有或第三方提供者很有用。
实例化
您可以对类进行实例化并自动解决其依赖。
class Foo
{
}
class Bar
{
private $foo;
public function __construct(Foo $foo)
{
$this->foo = $foo;
$this->name = $name;
}
public function foo()
{
return $this->foo;
}
}
$bar = $container->make(Bar::class);
$bar->foo();
如果构造函数有无法解决的参数
class Bar
{
private $foo;
private $baz;
public function __construct(Foo $foo, $baz)
{
$this->foo = $foo;
$this->baz = $baz;
}
public function foo()
{
return $this->foo;
}
public function baz()
{
return $this->baz;
}
}
$bar = $container->make(Bar::class, [
'baz' => 'baz',
]);
$bar->foo();
$bar->baz();
示例
Silex 集成
class App extends \Silex\Application
{
use \Okeyaki\Pimple\DiTrait;
}