stoyantodorov / resolve-utilities
Laravel 包
1.0.0
2023-10-23 08:46 UTC
Requires
- php: ^8.1
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-09 22:05:53 UTC
README
此包提供了一种使用便捷接口实例化类、向其发送类型化输入并接收类型化结果的方法
public function useUtility(string $abstract, array $input): mixed
这是通过 Resolver
类实现的。它负责确保没有重复的实例,并在使用之前重置输入/输出。
实例化的类应该扩展 StoyanTodorov\ResolveUtilities\Utility
- 因此它必须实现 execute
方法。
abstract public function execute(): self
发送到 useUtility
的数据通过 array $input
,在实例中作为类属性可用。我们期望的输出应设置在 output
属性中。这样我们就可以依赖类型化输入和输出,而无需将执行代码绑定到特定接口。
要求
-
PHP 8.1
-
Laravel
安装
composer require stoyantodorov/resolve-utilities
使用
扩展 Utility
use StoyanTodorov\ResolveUtilities\Utility; class StringOutputExample extends Utility { protected string $output; protected string|null $propOne = null; protected int|null $propTwo = null; protected array $requiredInput = ['propOne']; protected array $defaultInput = ['propTwo' => 1]; public function execute(): Utility { $this->output = $this->propOne; return $this; } }
- 在
requiredInput
中添加execute
使用的属性名称。 - 在
defaultInput
中添加具有其默认值的属性名称。当调用useUtility
方法时,除非在第二个参数中添加,否则使用这些值。
Resolver
$resolver = new StoyanTodorov\ResolveUtilities\Resolver; $resultOne = $resolver->useUtility(StringOutputExample::class, ['propOne' => 'test']); $resultTwo = $resolver->useUtility(StringOutputExample::class, ['propOne' => 'test', 'propTwo' => 100]);
- 发送给
useUtility
的第一个参数也可以是一个抽象定义,如'single-output-example'
。如果有这样的定义在Laravel
服务容器 中,它将被实例化。
HasResolver
use StoyanTodorov\ResolveUtilities\HasResolver; class ExampleClient { use HasResolver; public function test(string $propOne): string { return $this->useUtility(StringOutputExample::class, compact('propOne')); } } $result = (new ExampleClient)->test('test');
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。