ceceply / action
Laravel 动作生成器
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 } }
动作方法
您可以在编写命令时自定义方法名称。
如果方法名称是
create或update,则方法将自动具有名为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 许可 许可。