隨手搞個(gè)自用的代碼生成包laravel-generator

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

下面由laravel教程欄目給大家介紹代碼生成包laravel-generator,希望對(duì)需要的朋友有所幫助!

隨手搞個(gè)自用的代碼生成包laravel-generator

laravel-generator 代碼生成包

https://github.com/HogenYuan/laravel-generator

Introduction

由于最近在做后臺(tái),需要類似于Gii的代碼生成包,網(wǎng)上可能有比較豐富的包,不過(guò)沒(méi)怎么去了解過(guò),就根據(jù)自己習(xí)慣隨手寫(xiě)了個(gè)方便自己使用的包,寫(xiě)的比較匆忙所以代碼可能比較粗糙。目前只寫(xiě)了后端的,前端有時(shí)間在寫(xiě)。

1. 根據(jù)自定義框架目錄,修改*.stub生成自定義的初始代碼

2. 支持model + filter + request + resource + service + controller + migration + test

3. 自動(dòng)讀取同名數(shù)據(jù)表并填充到 model + resource + migration 的字段


Installation

composer require hogenlaravel-generator  php artisan vendor:publish --tag=generator
  • config/app.php
'providers' => [      ···    AppConsoleCommandsGeneratorGeneratorServiceProvider::class];

Run

  • 請(qǐng)先根據(jù)自己的框架目錄和代碼格式修改默認(rèn)代碼格式stub文件
## name : 必填,短橫式命名的資源名稱}## --module= : 必填,指定三級(jí)模塊(大小寫(xiě)規(guī)范) 如:GasStation/MainCard/Balance## --prefix= : 指定二級(jí)前綴(大小寫(xiě)規(guī)范) 默認(rèn):AdminApi## --baseDir= : 指定一級(jí)目錄(大小寫(xiě)規(guī)范) 默認(rèn):Http## --force : 覆蓋已存在文件## --filter : 使用filter篩選類## --test : 生成測(cè)試文件例子:  //有大小寫(xiě)規(guī)范  * Path: AppHttpControllerAdminApiUserExample   php artisan admin:make-resource testExample --force --baseDir=Http --prefix=AdminApi --module=UserExample  * Path: AppAdminControllerUserExample  php artisan admin:make-resource testExample --force --filter --baseDir=Admin  --module=UserExample

Deployment自定義配置

GeneratorMakeResource.php

protected $types = [      'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];
  • 選擇需要生成的組件,filter和test默認(rèn)不開(kāi)啟

  • 有先后順序之分,需按照上圖順序填寫(xiě)

目錄規(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ī)則設(shè)置,會(huì)影響各文件的命名空間和類名

  • inBaseDir決定是否在BaseDir內(nèi),默認(rèn)Http

  • prefix決定是否在二級(jí)前綴內(nèi)

Filter篩選器

protected $createFilter = false;protected $baseFilterHelperPath = "ModelsTraitsFilter";
  • 默認(rèn)不開(kāi)啟

  • 生成的filter基類的路徑 例: App/Models/Traits/Filter.php

  • 路徑生成只遵循$pathFormat中model的inBaseDir規(guī)則,不遵循prefix,避免個(gè)trait的生成

數(shù)據(jù)庫(kù)字段填充

/**   * 手動(dòng)配置   * resource文件中不需要添加到 $fillable 的字段   *   * @var string[]   */protected $resourceNoFillableFields = [      'update_time',      'updated_time',      'delete_time',      'deleted_time',];/**   * 手動(dòng)配置   * model文件中不需要添加到 $fillable 的字段   *   * @var string[]   */protected $modelNoFillableFields = [      'id',      'create_time',      'created_time',      'update_time',      'updated_time',      'delete_time',      'deleted_time',];

Code Format 修改默認(rèn)代碼格式

  • 參考各stub配置自定義默認(rèn)格式

  • 以下stub為簡(jiǎn)化后的代碼習(xí)慣,按需修改

Generatorstubs*.stub

<?php namespace DummyNamespace;  use NamespacedDummyModel;  use NamespacedDummyRequest;  use NamespacedDummyResource;  use NamespacedDummyService;  use BaseNamespaceResourceEmptyResource;  use BaseNamespaceControllerController;  class DummyClass extends Controller  {      public function index(DummyRequest $request){          $validated = $request->validated();  ????????$dummyModels?=?DummyModel::query()  ????????????-&gt;filter($validated)  ????????????-&gt;orderByDesc('id')  ????????????-&gt;paginate();  ????????return?DummyResource::collection($dummyModels);  ????}  ????···  }

TODO

  1. 前端根據(jù)組件生成

以上就是隨手搞個(gè)自用的代碼生成包

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享