Heim > Artikel > PHP-Framework > Erstellen Sie Ihr eigenes Codegenerierungspaket Laravel-Generator
eingeführt, um das Codegenerierungspaket Laravel-Generator vorzustellen. Ich hoffe, es wird den Freunden, die es brauchen, hilfreich sein!
Laravel-Generator-Codegenerierungspakethttps://github.com/HogenYuan/laravel-generator
EinführungAufgrund 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
'providers' => [ ··· App\Console\Commands\Generator\GeneratorServiceProvider::class];
Run
## 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
protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
/** * 手动配置 * 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<?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); } ··· }Ä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
befindet
rrreee
default Beispiel für den Pfad der Filterbasisklasse, der ohne Einschalten generiert wurde
: App/Models/Traits/Filter.phpDas 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!