Heim  >  Artikel  >  PHP-Framework  >  Erstellen Sie Ihr eigenes Codegenerierungspaket Laravel-Generator

Erstellen Sie Ihr eigenes Codegenerierungspaket Laravel-Generator

藏色散人
藏色散人nach vorne
2020-09-28 13:28:272132Durchsuche

eingeführt, um das Codegenerierungspaket Laravel-Generator vorzustellen. Ich hoffe, es wird den Freunden, die es brauchen, hilfreich sein!

Erstellen Sie Ihr eigenes Codegenerierungspaket Laravel-Generator

Laravel-Generator-Codegenerierungspaket

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

Einführung

Aufgrund der Hintergrundarbeit in letzter Zeit benötige ich etwas Ähnliches zu Gii Es gibt zwar viele Code-Generierungspakete im Internet, aber ich habe nicht viel darüber gelernt, also habe ich einfach ein Paket geschrieben, das für mich aufgrund meiner eigenen Gewohnheiten praktisch ist , daher kann der Code grob sein. Derzeit habe ich nur das Back-End geschrieben und werde das Front-End schreiben, wenn ich Zeit habe. 1. Ändern Sie *.stub, um benutzerdefinierten Anfangscode gemäß dem benutzerdefinierten Framework-Verzeichnis zu generieren

2. Unterstützen Sie model + filter + request + resources + service + controller + migration + test

3. Lesen Sie automatisch die gleichnamige Datentabelle und füllen Sie die Felder Modell + Ressource + Migration


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自定义配置

GeneratorMakeResource.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

  • Installation
  • protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
  • config/app.php

/**

 * 手动配置

 * 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',];
aus Führen Sie
  • aus. Bitte ändern Sie zunächst die Standard-Codeformat-Stub-Datei entsprechend Ihrem eigenen Framework-Verzeichnis und Codeformat

    Wählen Sie die Komponenten aus, Filter und Tests sind standardmäßig nicht aktiviert
  • Es gibt eine Reihenfolge, die Sie in der oben gezeigten Reihenfolge ausfüllen müssen
  • Verzeichnisregeln

<?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);

    }

    ···

}

Ändern Sie hier die Pfadregeleinstellungen jedes Moduls , was sich auf den Namespace jeder Datei und den Klassennamen auswirkt.

inBaseDir bestimmt, ob es sich innerhalb von BaseDir befindet. Das Standardpräfix Http
  • präfix bestimmt, ob es sich innerhalb des sekundären Präfixes
  • befindet

  • Filterfilter

rrreee

default Beispiel für den Pfad der Filterbasisklasse, der ohne Einschalten generiert wurde

: App/Models/Traits/Filter.php
Die Pfadgenerierung folgt nur den inBaseDir-Regeln des Modells in $pathFormat und folgt nicht dem Präfix, um die Generierung von Merkmalen zu vermeiden. 🎜 🎜🎜🎜🎜Ausfüllen von Datenbankfeldern. 🎜🎜rrreee Passen Sie das Standardformat an🎜🎜🎜🎜Der folgende Stub ist eine vereinfachte Codegewohnheit. Ändern Sie ihn nach Bedarf.🎜🎜🎜

Das obige ist der detaillierte Inhalt vonErstellen Sie Ihr eigenes Codegenerierungspaket Laravel-Generator. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen