search
HomePHP FrameworkLaravelCreate your own code generation package laravel-generator

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

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

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. If there is any infringement, please contact admin@php.cn delete
How to Use Laravel Migrations: A Step-by-Step TutorialHow to Use Laravel Migrations: A Step-by-Step TutorialMay 13, 2025 am 12:15 AM

LaravelmigrationsstreamlinedatabasemanagementbyallowingschemachangestobedefinedinPHPcode,whichcanbeversion-controlledandshared.Here'showtousethem:1)Createmigrationclassestodefineoperationslikecreatingormodifyingtables.2)Usethe'phpartisanmigrate'comma

Finding the Latest Laravel Version: A Quick and Easy GuideFinding the Latest Laravel Version: A Quick and Easy GuideMay 13, 2025 am 12:13 AM

To find the latest version of Laravel, you can visit the official website laravel.com and click the "Docs" button in the upper right corner, or use the Composer command "composershowlaravel/framework|grepversions". Staying updated can help improve project security and performance, but the impact on existing projects needs to be considered.

Staying Updated with Laravel: Benefits of Using the Latest VersionStaying Updated with Laravel: Benefits of Using the Latest VersionMay 13, 2025 am 12:08 AM

YoushouldupdatetothelatestLaravelversionforperformanceimprovements,enhancedsecurity,newfeatures,bettercommunitysupport,andlong-termmaintenance.1)Performance:Laravel9'sEloquentORMoptimizationsenhanceapplicationspeed.2)Security:Laravel8introducedbetter

Laravel: I messed up my migration, what can I do?Laravel: I messed up my migration, what can I do?May 13, 2025 am 12:06 AM

WhenyoumessupamigrationinLaravel,youcan:1)Rollbackthemigrationusing'phpartisanmigrate:rollback'ifit'sthelastone,or'phpartisanmigrate:reset'forall;2)Createanewmigrationtocorrecterrorsifalreadyinproduction;3)Editthemigrationfiledirectly,butthisisrisky;

Last Laravel version: Performance GuideLast Laravel version: Performance GuideMay 13, 2025 am 12:04 AM

ToboostperformanceinthelatestLaravelversion,followthesesteps:1)UseRedisforcachingtoimproveresponsetimesandreducedatabaseload.2)OptimizedatabasequerieswitheagerloadingtopreventN 1queryissues.3)Implementroutecachinginproductiontospeeduprouteresolution.

The Most Recent Laravel Version: Discover What's NewThe Most Recent Laravel Version: Discover What's NewMay 12, 2025 am 12:15 AM

Laravel10introducesseveralkeyfeaturesthatenhancewebdevelopment.1)Lazycollectionsallowefficientprocessingoflargedatasetswithoutloadingallrecordsintomemory.2)The'make:model-and-migration'artisancommandsimplifiescreatingmodelsandmigrations.3)Integration

Laravel Migrations Explained: Create, Modify, and Manage Your DatabaseLaravel Migrations Explained: Create, Modify, and Manage Your DatabaseMay 12, 2025 am 12:11 AM

LaravelMigrationsshouldbeusedbecausetheystreamlinedevelopment,ensureconsistencyacrossenvironments,andsimplifycollaborationanddeployment.1)Theyallowprogrammaticmanagementofdatabaseschemachanges,reducingerrors.2)Migrationscanbeversioncontrolled,ensurin

Laravel Migration: is it worth using it?Laravel Migration: is it worth using it?May 12, 2025 am 12:10 AM

Yes,LaravelMigrationisworthusing.Itsimplifiesdatabaseschemamanagement,enhancescollaboration,andprovidesversioncontrol.Useitforstructured,efficientdevelopment.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool