decodelabs/slingshot

统一的依赖注入调用器

v0.1.11 2024-08-22 01:10 UTC

This package is auto-updated.

Last update: 2024-09-04 21:33:21 UTC


README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

统一的依赖注入调用器

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