ceceply/action

Laravel 动作生成器

v1.0.0 2023-08-14 09:23 UTC

This package is auto-updated.

Last update: 2024-09-25 10:46:21 UTC


README

这是一个用于使用 Artisan 命令 生成动作类的 Laravel 扩展包。

安装

需要 PHP 8.1+

需要使用 Composer

composer require ceceply/action --dev

Ceceply\Action\Providers\ActionServiceProvider::class 添加到 config/app.php 文件中的服务提供者列表中。

'providers' => ServiceProvider::defaultProviders()->merge([
    /*
     * Package Service Providers...
     */
    Ceceply\Action\Providers\ActionServiceProvider::class,

    /*
     * Application Service Providers...
     */
])->toArray(),

动作类

在此包中,动作类是一个只有一个任务的简单类。例如,我们有一个名为 CreatePayment 的动作类。这个类只有一个任务,即创建支付。

此外,在此包中,默认情况下动作类将实现一个接口。该接口将在动作类生成之前自动生成。例如,如果动作类名为 CreatePayment,则该类实现的接口将名为 CreatesPayments。您可以稍后自定义接口名称。

运行以下命令以生成一个名为 CreatePayment 的新动作类。

php artisan make:action CreatePayment

如果该命令执行成功,将生成一个实现了接口的动作类。

// app/Actions/Payment/Contracts/CreatesPayments.php

<?php

namespace App\Actions\Payment\Contracts;

use App\Models\Payment;

interface CreatesPayments
{
	public function create(array $inputs);
}
// app/Actions/Payment/CreatePayment.php

<?php

namespace App\Actions\Payment;

use App\Actions\Payment\Contracts\CreatesPayments;
use App\Models\Payment;

class CreatePayment implements CreatesPayments
{
	public function create(array $inputs)
	{
		// TODO: create
	}
}

动作方法

您可以在编写命令时自定义方法名称。

如果方法名称是 createupdate,则方法将自动具有名为 inputs 的数组参数。

php artisan make:action Payment/CreatePayment --action=handle

或者更短。

php artisan make:action Payment/CreatePayment -ahandle

输出

// app/Actions/Payment/Contracts/CreatesPayments.php

interface CreatesPayments
{
	public function handle();
}


// app/Actions/Payment/CreatePayment.php

class CreatePayment implements CreatesPayments
{
	public function handle()
	{
		// TODO: handle
	}
}

模型

您可以将模型添加到您的动作类中。该模型将放置在动作方法的第一个参数中。

php artisan make:action Payment/CreatePayment --model=Payment

或者更短。

php artisan make:action Payment/CreatePayment -mPayment

输出

// app/Actions/Payment/Contracts/CreatesPayments.php
<?php

namespace App\Actions\Payment\Contracts;

use App\Models\Payment;

interface CreatesPayments
{
	public function create(Payment $payment, array $inputs);
}
// app/Actions/Payment/CreatePayment.php
<?php

namespace App\Actions\Payment;

use App\Actions\Payment\Contracts\CreatesPayments;
use App\Models\Payment;

class CreatePayment implements CreatesPayments
{
	public function create(Payment $payment, array $inputs)
	{
		// TODO: create
	}
}

猜测模型

除了手动定义模型外,您可以在编写命令时添加 --guess-model 选项。

php artisan make:action Payment/CreatePayment --guess-model

或者更短。

php artisan make:action Payment/CreatePayment -g

类的最后一个单词将被视为模型名称。如果最后一个单词是复数,则将其改为单数。

自定义接口

您可以在编写命令时自定义接口名称。

php artisan make:action Payment/CreatePayment --interface=Payment/Contracts/CreatePaymentContracts

或者更短。

php artisan make:action Payment/CreatePayment -iPayment/Contracts/CreatePaymentContracts

无接口

您可以创建一个不实现接口的动作类。

php artisan make:action Payment/CreatePayment --without-interface

或者更短。

php artisan make:action Payment/CreatePayment -w

强制

即使类已经存在,也要创建该类。

php artisan make:action Payment/CreatePayment --force

或者更短。

php artisan make:action Payment/CreatePayment -f

强制创建

即使类和接口已经存在,也要创建类和接口。

php artisan make:action Payment/CreatePayment --force-both

或者更短。

php artisan make:action Payment/CreatePayment -F

创建动作接口

如果您只想创建接口,可以使用 make:iaction 命令。这样只生成接口。

php artisan make:iaction Payment/CreatesPayments

即使只创建接口,您还可以自定义动作方法名称、添加模型、猜测模型和强制创建接口。

php artisan make:iaction Payment/CreatesPayments -ahandle
php artisan make:iaction Payment/CreatesPayments -mPayment
php artisan make:iaction Payment/CreatesPayments -g
php artisan make:iaction Payment/CreatesPayments -f

许可证

此包是开源软件,受 MIT 许可 许可。