Home>Article>PHP Framework> Create your own code generation package laravel-generator

Create your own code generation package laravel-generator

藏色散人
藏色散人 forward
2020-09-28 13:28:27 2059browse

The following tutorial column will introduce you to the code generation package laravel-generator. I hope it will be helpful to friends in need!

Create your own code generation package laravel-generator

Laravel-generator code generation package

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

Introduction

Since I am working on the backend recently, I need a code generation package similar to Gii. There may be more abundant packages on the Internet. But I didn’t know much about it, so I just wrote a package that was convenient for me to use based on my own habits. I wrote it in a hurry, so the code may be rough. At present, I have only written the back-end, and I will be writing the front-end when I have time.1. Modify *.stub to generate customized initial code based on the custom framework directory

2. Support

model filter request resource service controller migration test

3. Automatically read the data table with the same name and fill in the fields ofmodel 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

Please modify the default according to your own framework directory and code format first Code format stub file

## 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 custom configuration

Generator\MakeResource.php

protected $types = [ 'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];

Select the components that need to be generated. Filter and test are not enabled by default.

  • There is a sequence. You need to fill in the order according to the picture above

  • Directory rules
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' => ''],];

Modify the path rule settings of each module here, which will affect the namespace and class name of each file

  • inBaseDir determines whether it is within BaseDir, the default is

    Http
  • prefix determines whether it is within the secondary prefix

  • Filter filter
protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";

Not enabled by default

  • Path path example of the generated filter base class: App/ Models/Traits/Filter.php

  • Path generation only follows the inBaseDir rules of the model in $pathFormat, and does not follow the prefix to avoid the generation of individual traits

  • Database field filling
/** * 手动配置 * 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 Modify the default code format

Refer to each stub configuration to customize the default format

  • The following stub is a simplified code habit, modify it as needed

  • ##Generator\stubs\*.stub

    validated(); $dummyModels = DummyModel::query() ->filter($validated) ->orderByDesc('id') ->paginate(); return DummyResource::collection($dummyModels); } ··· }

TODO

The front end is generated based on the component

The above is the detailed content of Create your own code generation package laravel-generator. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete