redot/container

最小化、轻量级、快速的 PHP 依赖注入容器。

0.0.1 2022-11-16 11:09 UTC

This package is auto-updated.

Last update: 2024-09-22 09:30:08 UTC


README

tests

最小化、轻量级、快速的 PHP 依赖注入容器

安装

composer require redot/container

测试

composer test

使用

容器的原理基于依赖注入范式,使用 ReflectionClass 获取类的依赖。

要使用容器,您必须首先创建一个新的容器实例。

use Redot\Container\Container;

$container = new Container();

或者直接使用静态方法 Container::getInstance(),如果存在,则返回全局可用的容器,否则创建一个新的。

$container = Container::getInstance();

在创建容器之后,您可以将依赖绑定到容器中。

$container->bind(Foo::class);

此外,您还可以创建一个单例,每次调用 get 方法时都会返回。

$container->singleton('foo', function () {
    // ...
});

单例对于需要一次性创建但成本较高的类非常有用。

要从容器中获取依赖,您可以调用 make 方法。

$foo = $container->make('foo');

makeget 之间的主要区别是 make 接受第二个参数,这是一个传递给类构造函数的参数数组,而 get 不接受 因为实现了 PSR-11

顺便说一下,您还可以为类创建别名,这样您就可以使用不同的名称来调用它。

$container->alias(Foo::class, 'bar');

自动绑定

不用担心自动绑定,容器会为您处理。

$container->make(BrandNewClass::class);

它会自动绑定类的依赖,如果类有构造函数,则会将依赖传递给它,容器还可以使用 call 方法注入特定的方法依赖。

$container->call([Foo::class, 'setBar'], ['bar' => $bar]);

就这样!享受吧 ✌。