Laravel-generator 程式碼產生套件
https://github.com/HogenYuan/laravel -generator
Introduction#由於最近在做後台,需要類似Gii的程式碼產生包,網路上可能有比較豐富的包,不過沒怎麼去了解過,就根據自己習慣隨手寫了個方便自己使用的包,寫的比較匆忙所以代碼可能比較粗糙。目前只寫了後端的,前端有時間在寫。 1. 根據自訂框架目錄,修改*.stub產生自訂的初始程式碼2. 支援
model filter request resource service controller migration test3. 自動讀取同名資料表並填入
model resource migration 的欄位
Installation
composer require hogen\laravel-generator php artisan vendor:publish --tag=generator
'providers' => [ ··· App\Console\Commands\Generator\GeneratorServiceProvider::class];
請先根據自己的框架目錄和程式碼格式修改默認程式碼格式stub檔案
## name : 必填,短横式命名的资源名称}## --module= : 必填,指定三级模块(大小写规范) 如:GasStation/MainCard/Balance## --prefix= : 指定二级前缀(大小写规范) 默认:AdminApi## --baseDir= : 指定一级目录(大小写规范) 默认:Http## --force : 覆盖已存在文件## --filter : 使用filter筛选类## --test : 生成测试文件例子: //有大小写规范 * Path: App\Http\Controller\AdminApi\User\Example php artisan admin:make-resource testExample --force --baseDir=Http --prefix=AdminApi --module=User\Example * Path: App\Admin\Controller\User\Example php artisan admin:make-resource testExample --force --filter --baseDir=Admin --module=User\Example
Deployment自訂設定
Generator\MakeResource.php
protected $types = [ 'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];
選擇需要產生的元件,filter與test預設不開啟
目錄規則
protected $pathFormat = [ 'model' => ['inBaseDir' => false, 'prefix' => ''], 'service' => ['inBaseDir' => false, 'prefix' => ''], 'test' => ['inBaseDir' => false, 'prefix' => true], 'request' => ['inBaseDir' => true, 'prefix' => true], 'resource' => ['inBaseDir' => true, 'prefix' => true], 'controller' => ['inBaseDir' => true, 'prefix' => true], 'migration' => ['inBaseDir' => false, 'prefix' => ''],];
Http
#Filter篩選器
protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
產生的filter基底類別的路徑範例: App/ Models/Traits/Filter.php
路徑生成只遵循$pathFormat中model的inBaseDir規則,不遵循prefix,避免個trait的生成
#資料庫欄位填入
/** * 手动配置 * resource文件中不需要添加到 $fillable 的字段 * * @var string[] */protected $resourceNoFillableFields = [ 'update_time', 'updated_time', 'delete_time', 'deleted_time',];/** * 手动配置 * model文件中不需要添加到 $fillable 的字段 * * @var string[] */protected $modelNoFillableFields = [ 'id', 'create_time', 'created_time', 'update_time', 'updated_time', 'delete_time', 'deleted_time',];
Code Format 修改預設程式碼格式
以下stub為簡化後的程式碼習慣,按需修改
<?php namespace DummyNamespace; use NamespacedDummyModel; use NamespacedDummyRequest; use NamespacedDummyResource; use NamespacedDummyService; use BaseNamespaceResource\EmptyResource; use BaseNamespaceController\Controller; class DummyClass extends Controller { public function index(DummyRequest $request){ $validated = $request->validated(); $dummyModels = DummyModel::query() ->filter($validated) ->orderByDesc('id') ->paginate(); return DummyResource::collection($dummyModels); } ··· }
以上是隨手搞個自用的程式碼產生套件laravel-generator的詳細內容。更多資訊請關注PHP中文網其他相關文章!