okeyaki/pimple-di

此包已被放弃,不再维护。未建议替代包。

将依赖注入(DI)功能与Pimple集成。

1.0.1 2017-12-20 04:39 UTC

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;
}