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. 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); } ··· }
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!