Home > PHP Framework > Laravel > body text

Create your own code generation package laravel-generator

藏色散人
Release: 2020-09-28 13:28:27
forward
2134 people have browsed it

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 of model resource migration


Installation

composer require hogen\laravel-generator

php artisan vendor:publish --tag=generator
Copy after login
config/app.php

'providers' => [

    ···    App\Console\Commands\Generator\GeneratorServiceProvider::class];
Copy after login
  • 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
Copy after login
  • Deployment custom configuration

Generator\MakeResource.php

protected $types = [

    'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];
Copy after login

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' => ''],];
Copy after login

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";
Copy after login

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',];
Copy after login

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

    <?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);
    
        }
    
        ···
    
    }
    Copy after login

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!

Related labels:
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template