redot / container
最小化、轻量级、快速的 PHP 依赖注入容器。
0.0.1
2022-11-16 11:09 UTC
Requires
- php: >=8.0
- psr/container: ^2.0
Requires (Dev)
- jetbrains/phpstorm-attributes: ^1.0
- pestphp/pest: ^1.21
This package is auto-updated.
Last update: 2024-09-22 09:30:08 UTC
README
最小化、轻量级、快速的 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');
make
和 get
之间的主要区别是 make
接受第二个参数,这是一个传递给类构造函数的参数数组,而 get
不接受 因为实现了 PSR-11。
顺便说一下,您还可以为类创建别名,这样您就可以使用不同的名称来调用它。
$container->alias(Foo::class, 'bar');
自动绑定
不用担心自动绑定,容器会为您处理。
$container->make(BrandNewClass::class);
它会自动绑定类的依赖,如果类有构造函数,则会将依赖传递给它,容器还可以使用 call
方法注入特定的方法依赖。
$container->call([Foo::class, 'setBar'], ['bar' => $bar]);
就这样!享受吧 ✌。