這篇文章將為大家詳細講解有關(guān)如何生成包laravel-generator,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Laravel-generator 代碼生成包
https://github.com/HogenYuan/laravel-generator
Introduction
由于最近在做后臺,需要類似于Gii的代碼生成包,網(wǎng)上可能有比較豐富的包,不過沒怎么去了解過,就根據(jù)自己習慣隨手寫了個方便自己使用的包,寫的比較匆忙所以代碼可能比較粗糙。目前只寫了后端的,前端有時間在寫。
1. 根據(jù)自定義框架目錄,修改*.stub生成自定義的初始代碼
2. 支持model + filter + request + resource + service + controller + migration + test
3. 自動讀取同名數(shù)據(jù)表并填充到 model + resource + migration
的字段
Installation
composer require hogen\laravel-generator php artisan vendor:publish --tag=generator
config/app.php
'providers' => [ ··· App\Console\Commands\Generator\GeneratorServiceProvider::class];
Run
請先根據(jù)自己的框架目錄和代碼格式修改默認代碼格式stub文件
## name : 必填,短橫式命名的資源名稱}## --module= : 必填,指定三級模塊(大小寫規(guī)范) 如:GasStation/MainCard/Balance## --prefix= : 指定二級前綴(大小寫規(guī)范) 默認:AdminApi## --baseDir= : 指定一級目錄(大小寫規(guī)范) 默認:Http## --force : 覆蓋已存在文件## --filter : 使用filter篩選類## --test : 生成測試文件例子: //有大小寫規(guī)范 * 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默認不開啟
有先后順序之分,需按照上圖順序填寫
目錄規(guī)則
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' => ''],];
在此修改各模塊的路徑規(guī)則設置,會影響各文件的命名空間和類名
inBaseDir決定是否在BaseDir內(nèi),默認Http
prefix決定是否在二級前綴內(nèi)
Filter篩選器
protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
默認不開啟
生成的filter基類的路徑 例: App/Models/Traits/Filter.php
路徑生成只遵循$pathFormat中model的inBaseDir規(guī)則,不遵循prefix,避免個trait的生成
數(shù)據(jù)庫字段填充
/** * 手動配置 * 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); } ··· }
關(guān)于“如何生成包laravel-generator”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。