首頁 >php框架 >Laravel >隨手搞個自用的程式碼產生套件laravel-generator

隨手搞個自用的程式碼產生套件laravel-generator

藏色散人
藏色散人轉載
2020-09-28 13:28:272144瀏覽

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
  • config/app.php

    'providers' => [
    
        ···    App\Console\Commands\Generator\GeneratorServiceProvider::class];
    Run

    請先根據自己的框架目錄和程式碼格式修改默認程式碼格式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' => ''],];
      • 在此修改各模組的路徑規則設置,會影響各檔案的命名空間和類別名稱

      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為簡化後的程式碼習慣,按需修改

      1. #Generator\stubs\*.stub
      2. <?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(&#39;id&#39;)
        
                    ->paginate();
        
                return DummyResource::collection($dummyModels);
        
            }
        
            ···
        
        }
      #########TODO############前端根據元件產生#######

      以上是隨手搞個自用的程式碼產生套件laravel-generator的詳細內容。更多資訊請關注PHP中文網其他相關文章!

      陳述:
      本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除