exan / container
通用的容器实现
1.0.1
2023-05-25 14:21 UTC
Requires
- psr/container: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.17
- phpunit/phpunit: ^10.1
README
一个最小的PSR-11兼容容器。在可能的情况下自动解决依赖。
安装
composer require exan/container
使用方法
$container = new Exan\Container(); $someClass = $container->get(SomeClass::class);
这将尝试为您实例化一个SomeClass实例并返回它。如果您稍后再次请求此类,它将返回相同的实例。
假设没有无法解决的依赖,它还将解决嵌套依赖。
class SomeClass { public function __construct(public readonly Dependency $dependency) { // ... } } $container = new Exan\Container(); $someClass = $container->get(SomeClass::class);
此示例中的SomeClass将使用Dependency实例进行实例化。
它也可以处理接口,但不能自动解决该接口的实现。您需要手动注册条目。
interface SomeInterface { // ... } class SomeClass implements SomeInterface { // ... } $container = new Exan\Container(); $container->register(SomeInterface::class, new SomeClass()) $someClass = $container->get(SomeInterface::class);
注意:它不会自动解决原始类型,如string和int。