php-packages/container

PHP 的 IoC 容器:简单、快速、简洁。

1.2.0 2015-02-19 12:24 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:59:56 UTC


README

PHP 的 IoC 容器:简单、快速、简洁。

特性

  • 通过类型提示进行注入
  • 通过属性注解进行注入
  • 通过数组进行手动依赖注入

导航

安装

composer require php-packages/container

使用

mixed make(string|mixed $class, array $dependencies = [])

class A
{
}

get_class(container()->make("A")); # => "A"
get_class(container()->make(new A)); # => "A"

class B
{

    public function __construct(array $foo = [], A $bar)
    {
        var_dump($foo); # => []
        get_class($bar); # => "A"
    }
}

container()->make("B");

class C
{

    public function __construct(array $foo)
    {
        var_dump($foo); # => [1, 2, "C"]
    }
}

container()->make("C", [[1, 2, raw("C")]]);

object inject(object $instance)

请始终在 make 中调用 inject 方法。

class C
{
}

class A
{

    /**
     * @shouldBeInjected
     * @var C
     */
    public $b;
}

get_class(container()->inject(new A)->b); # => "C"

void bind(string $binding, string|object $value)

container()->bind("foo", "stdClass");
container()->bind("bar", $bar = new stdClass);

var_dump(container()->make("foo")); # => an instance of stdClass
var_dump(container()->make("bar") === container()->make("bar")); # => true

开发

make run-tests
make coverage-report coverage-report-server

附加信息

Container 使用 MIT 许可证发布。