Victor-Falcon/laravel-task

简单的 Laravel 任务触发器

v1.2.2 2021-07-01 08:10 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:14 UTC


README

Laravel Task

GitHub Workflow Status Packagist Packagist Packagist

🇪🇸 西班牙语文档在这里

目录

安装

通过 composer 安装

# PHP >= 8
composer require victor-falcon/laravel-task
# Previous PHP versions
composer require victor-falcon/laravel-task:1.1.4

使用

1. 基本使用

使用以下命令创建一个简单的任务

artisan task:make Shop/CreateUserShop

你可以传递 Shop/CreateUserShop 到子文件夹创建类或仅传递任务名称。默认路径是 app/Tasks

<?php

declare(strict_types=1);

namespace App\Tasks\Shop;

use VictorFalcon\LaravelTask\Task;
use VictorFalcon\LaravelTask\Taskable;

final class CreateUserShop implements Task
{
	use Taskable;

	private User $user;

	public function __construct(User $user)
	{
		$this->user = $user;
	}

	public function handle(ShopCreator $creator): Shop
	{
		// Create your shop
	}
}

并触发它

$shop = CreateUserShop::trigger($user);

2. 带验证

如果你想,你可以使用 Laravel 验证器将验证数据传递到任务中。例如,如果你需要验证用户创建,你可以这样做。

final class CreateUser implements Task
{
	public function rules(): array
	{
		return [
			'name' => 'required|string|min:5',
			'email' => 'required|email|unique:users,email',
		];
	}

	public function handle(): User
	{
		return User::create($this->data);
	}
}

然后你可以使用以下方式触发你的任务,并带有额外的数据

CreateUser::trigger()->withValid([
	'name' => 'Víctor Falcón',
	'email' => 'hi@victorfalcon.es',
]);

你可以使用任务中的 messages(): array 方法自定义消息或使用 customAttributes(): array 添加自定义属性。

如果你想自定义验证器错误包的名称,只需在类中定义 string $errorBag 属性。

3. 带授权

有时你需要检查触发任务的用户是否有权限。你可以通过在任务中添加一个简单的 authorize(): bool 方法来实现。如果此方法返回 false,则会在执行前抛出 AuthorizationException

public function authorize(): bool
{
	return $this->user()->can('create', Product::class);
}

在任何任务中,你可以使用 $this->user() 访问当前登录用户,或者如果你想,你可以通过这样做传递一个用户对象

CreateProduct::trigger()->by($user);

4. 恢复响应

默认情况下,每个任务都会在没有任何返回值的情况下执行。因此,如果你想恢复任务的结果,你必须调用 result() 方法。

// This will return the result of the `handle` method inside our task
$product = CreateProduct::trigger()->withValid($data)->result();

生成 IDE 帮助

为了使编写和使用你的任务更加容易,你可以使用 artisan task:ide-help 命令自动生成 _ide_helper_tasks.php 文件。

更新配置

如果你想,你可以发布包配置以自定义,例如,你想将任务存储在哪里

artisan vendor:publish --tag=laravel-task

致谢