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

Erstellen Sie Ihr eigenes Codegenerierungspaket Laravel-Generator

藏色散人
Freigeben: 2020-09-28 13:28:27
nach vorne
2159 Leute haben es durchsucht

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
Nach dem Login kopieren
  • config/app.php
'providers' => [

    ···    App\Console\Commands\Generator\GeneratorServiceProvider::class];
Nach dem Login kopieren

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
Nach dem Login kopieren

Deployment自定义配置

GeneratorMakeResource.php

protected $types = [

    'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];
Nach dem Login kopieren
  • 选择需要生成的组件,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' => ''],];
Nach dem Login kopieren
  • 在此修改各模块的路径规则设置,会影响各文件的命名空间和类名

  • inBaseDir决定是否在BaseDir内,默认Http

  • Installation
  • protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
    Nach dem Login kopieren
  • 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',];
Nach dem Login kopieren
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);

    }

    ···

}
Nach dem Login kopieren

Ä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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage