paulhenri-l / laravel-task-runner
帮助您将命令工作流组合成一系列任务
3.1.1
2021-08-14 16:01 UTC
Requires
- php: ^7.3|^8.0
- laravel/framework: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
此工具可以帮助您在命令中运行一组定义的任务。在您的命令需要依次运行不同的操作时非常有用。
此工具在LaravelEngine 和 PHL Console 中都有使用。
示例
php artisan my-command [Some\Namespace\MyFirstTask] Hello from MyFirstTask. [Some\Namespace\MySecondTask] MySecondTask Complete. Installation done 🎉
安装
composer require paulhenri-l/laravel-task-runner
用法
为了使用TaskRunner,您需要将CanRunTasks
特质添加到您的命令中,并调用runTasks
方法。
唯一的参数是您要运行的任务数组。任务是一个可调用的类。您可以传递任务的实例或其类名。
如果传递类名,任务将通过Laravel的容器解析,因此您可以在任务的构造函数中为任何依赖进行类型提示。
使用特质
<?php class FakeCommand extends Illuminate\Console\Command { use PaulhenriL\LaravelTaskRunner\CanRunTasks; protected $signature = 'my-command'; /** * Execute the console command. */ public function handle() { $this->runTasks([ MyFirstTask::class, new MySecondTask() ]); $this->info('Installation done 🎉'); } }
编写任务
<?php use Illuminate\Console\Command; use PaulhenriL\LaravelTaskRunner\TaskInterface; class MyFirstTask implements TaskInterface { public function __construct(SomeDependency $someDependency) { // } public function __invoke(Command $command) { $command->info('Hello from MyFirstTask.'); } }
提前终止
如果您想提前终止,只需从您的任务中返回false即可。
<?php use Illuminate\Console\Command; use PaulhenriL\LaravelTaskRunner\TaskInterface; class SomeTask implements TaskInterface { public function __invoke(Command $command) { if ($thereIsAnError) { return false; } } }