ambimax / php-lib-runner
1.0.0
2022-12-16 10:27 UTC
Requires
- php: >=8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan-symfony: ^1.1
- phpunit/phpunit: ~9.5.2
This package is not auto-updated.
Last update: 2024-09-20 19:19:54 UTC
README
快速开始
安装
composer require ambimax/php-lib-runner
基本用法
运行器应该像命令或计划任务一样组合和调用代码的不同部分。
外部变量应在 ArgumentBag 中打包和验证。
实现 ArgumentBag
use \Ambimax\Runner\ArgumentBag\ArgumentEnumInterface; use \Ambimax\Runner\ArgumentBag\ArgumentBagInterface; /* * Implementation */ class DemoArgumentBag implements ArgumentBagInterface { const DEMO_ARGUMENT_1 = 'demoArgument1'; const DEMO_ARGUMENT_2 = 'demoArgument2'; const DEMO_ARGUMENT_3 = 'demoArgument3'; public function __construct( protected string $demoArgument1, protected string $demoArgument2 protected string $demoArgument3, ) { try { $this->validateDemoArgument1($demoArgument1); } catch (ArgumentValidationException $exception) { $exceptions[] = $exception; } try { $this->validateDemoArgument2($demoArgument2); } catch (ArgumentValidationException $exception) { $exceptions[] = $exception; } if ($exceptions) { if (count($exceptions) > 1) { throw new MultipleArgumentValidationException($exceptions); } throw $exceptions[0]; } } public function getArgument(string $argument) { return match ($argument) { self::$DEMO_ARGUMENT_1 => $this->demoArgument1, self::$DEMO_ARGUMENT_2 => $this->demoArgument2, self::$DEMO_ARGUMENT_3 => $this->demoArgument3, } } // protected function validateDemoArgument1() {} // protected function validateDemoArgument2() {} }
实现运行器
use \Ambimax\Runner\AbstractRunner; use \Ambimax\Runner\ArgumentBag\ArgumentEnumInterface; class DemoRunner extends AbstractRunner { public function getArgumentBagType(): string { return DemoArgumentBag::class; } public function run(): void { $demo1 = $this->getArgument(DemoArgumentBag::DEMO_ARGUMENT_1); $demo2 = $this->getArgument(DemoArgumentBag::DEMO_ARGUMENT_2); $demo3 = $this->getArgument(DemoArgumentBag::DEMO_ARGUMENT_3); // your code here } }
用法
$argumentBag = new DemoArgumentBag('example1', 'example2', 'example3'); (new DemoRunner($argumentBag))->run();
详细描述
辅助脚本
您可以在这里了解更多关于它们的信息。
附加文档
在 ./docs
中添加附加文档的链接列表。
作者(s)
- Fabian Köhnen, ambimax® GmbH