corex / container
简单且不可变的依赖注入容器
2.2.0
2023-12-13 09:27 UTC
Requires
- php: ^8.1
- psr/container: ^2.0
Requires (Dev)
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-27 15:40:23 UTC
README
重大变更 - 此包已从头开始重写,以使其更加严格且易于使用。
- 容器是不可变的。
- 支持PSR-11容器接口。
- 支持在定义上设置默认参数。
一些示例
创建一个未绑定的类。
$myClass = (new Container())->make(MyClass::class);
如果它们提前绑定,将解析类型提示。
创建一个带有绑定和参数的类。
$containerBuilder = new ContainerBuilder(); $containerBuilder->bind('myClass', MyClass::class) ->setArgument('firstname', 'Roger'); $container = new Container($containerBuilder); $myClass = $container->make('myClass', [ 'lastname' => 'Moore' ]);
通过类创建类绑定。
$containerBuilder = new ContainerBuilder(); $containerBuilder->bindClass(MyClass::class); $container = new Container($containerBuilder); $myClass = $container->get(MyClass::class);
通过实现接口创建类绑定。
interface MyClassInterface { } class MyClass implements MyClassInterface { } $containerBuilder = new ContainerBuilder(); $containerBuilder->bindClassOnInterface(MyClass::class); $container = new Container($containerBuilder); $myClass = $container->get(MyClassInterface::class);
参数
参数将按照以下顺序解析
- 将类型提示ContainerInterface解析为容器的实例。
- 在定义上指定默认参数。
- 在构造函数/方法中指定默认参数。
- 在调用make()时指定参数,且尚未解析。