下面由教學欄目給大家介紹程式碼生成包laravel-generator,希望對需要的朋友有所幫助!
Laravel-generator 程式碼生成包
https://github.com/HogenYuan/laravel-generator
Introduction
由於最近在做後臺,需要類似於Gii的程式碼生成包,網上可能有比較豐富的包,不過沒怎麼去了解過,就根據自己習慣隨手寫了個方便自己使用的包,寫的比較匆忙所以程式碼可能比較粗糙。目前只寫了後端的,前端有時間在寫。
1. 根據自定義框架目錄,修改*.stub生成自定義的初始程式碼
2. 支援model + filter + request + resource + service + controller + migration + test
3. 自動讀取同名資料表並填充到 model + resource + migration
的欄位
Installation
composer require hogen\laravel-generator php artisan vendor:publish --tag=generator
'providers' => [ ··· App\Console\Commands\Generator\GeneratorServiceProvider::class];
Run
## 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' => ''],];
在此修改各模組的路徑規則設定,會影響各檔案的名稱空間和類名
inBaseDir決定是否在BaseDir內,預設Http
prefix決定是否在二級字首內
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設定自定義預設格式
以下stub為簡化後的程式碼習慣,按需修改
Generator\stubs\*.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); } ··· }
TODO
以上就是隨手搞個自用的程式碼生成包laravel-generator的詳細內容,更多請關注TW511.COM其它相關文章!