decodelabs / slingshot
统一的依赖注入调用器
v0.1.11
2024-08-22 01:10 UTC
Requires
- php: ^8.1
- decodelabs/archetype: ^0.3
- decodelabs/exceptional: ^0.4.4
- psr/container: ^2.0
Requires (Dev)
- decodelabs/dovetail: ^0.2.1
- decodelabs/genesis: ^0.9
- decodelabs/pandora: ^0.2.12
- decodelabs/phpstan-decodelabs: ^0.6.7
README
统一的依赖注入调用器
Slingshot 提供了一种简单的接口来调用具有依赖注入的对象方法。
在 DecodeLabs 博客 上获取新闻和更新。
安装
通过 Composer 安装
composer require decodelabs/slingshot
用法
使用 Slingshot 实例通过依赖注入调用一个函数
use DecodeLabs\Slingshot; $slingshot = new Slingshot( container: $container, // Psr\Container\ContainerInterface parameters: [ 'param1' => 'hello' ] ); function test( string $param1, string $param2 ) { return $param1 . ' '. $param2; } $output = $slingshot->invoke(test(...), [ 'param2' => 'world' ]); // hello world
或者通过依赖注入实例化一个对象
use DecodeLabs\Harvest\Context as HarvestContext; class Test { public function __construct( // Fetch or create a Harvest Context (example) from container HarvestContext $param1, string $param2 ) { // ... } } $testObect = $slingshot->instantiate(Test::class, [ 'param2' => 'value' ]);
可以通过类型将对象添加到 Slingshot 中进行引用匹配
$object = new Test(...); $slingshot->addType($object); $slingshot->invoke(function(Test $test) { // ... });
许可
Slingshot 在 MIT 许可证下授权。有关完整许可证文本,请参阅 LICENSE。