gacela-project / resolver
0.7.0
2024-07-06 11:07 UTC
Requires
- php: >=8.1
- psr/container: >=1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.18
- symfony/var-dumper: ^5.4
- vimeo/psalm: ^5.25
README
加塞容器
安装
composer require gacela-project/container
使用
通过类名获取实例。
您可以在构造函数中定义一个映射,将接口与您希望在发现接口时创建(或使用)的具体类关联起来。
容器
此容器将自动解析该类所有内部依赖项。根据依赖项类型,它会以不同的方式解析。
原始类型
:它将使用其默认值。类
:它将实例化它,如果它们有依赖项,也将递归解析。接口
:它们将根据通过容器构造函数注入的绑定进行解析。
$bindings = [ AbstractString::class => StringClass::class, ClassInterface::class => new ConcreteClass(/* args */), ComplexInterface::class => new class() implements Foo {/** logic */}, FromCallable::class => fn() => new StringClass('From callable'), ]; $container = new Container($bindings); $instance = $container->get(YourClass::class); ////////////////////////////////////////////// # Extra: you can resolve closures on-the-fly using the container bindings $resolved = $container->resolve(function (ComplexInterface $i) { // your custom logic return $i->...; });
示例
Gacela 框架中的一个使用示例: AbstractClassResolver