最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

随手搞个自用的代码生成包laravel-generator

来源:懂视网 责编:小采 时间:2020-11-02 18:23:11
文档

随手搞个自用的代码生成包laravel-generator

随手搞个自用的代码生成包laravel-generator: 下面由Laravel教程栏目给大家介绍代码生成包laravel-generator,希望对需要的朋友有所帮助!Laravel-generator 代码生成包https://github.com/HogenYuan/laravel-generatorIntroduction由于最近在做后台,需要类似于Gii的代码生成包,网
推荐度:
导读随手搞个自用的代码生成包laravel-generator: 下面由Laravel教程栏目给大家介绍代码生成包laravel-generator,希望对需要的朋友有所帮助!Laravel-generator 代码生成包https://github.com/HogenYuan/laravel-generatorIntroduction由于最近在做后台,需要类似于Gii的代码生成包,网

下面由Laravel教程栏目给大家介绍代码生成包laravel-generator,希望对需要的朋友有所帮助!

Laravel-generator 代码生成包

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

Introduction

由于最近在做后台,需要类似于Gii的代码生成包,网上可能有比较丰富的包,不过没怎么去了解过,就根据自己习惯随手写了个方便自己使用的包,写的比较匆忙所以代码可能比较粗糙。目前只写了后端的,前端有时间在写。

1. 根据自定义框架目录,修改*.stub生成自定义的初始代码

2. 支持model + filter + request + resource + service + controller + migration + test

3. 自动读取同名数据表并填充到 model + resource + migration 的字段


Installation

composer require hogenlaravel-generator

php artisan vendor:publish --tag=generator
  • config/app.php
  • 'providers' => [
    
     ··· AppConsoleCommandsGeneratorGeneratorServiceProvider::class];

    Run

  • 请先根据自己的框架目录和代码格式修改默认代码格式stub文件
  • ## name : 必填,短横式命名的资源名称}## --module= : 必填,指定三级模块(大小写规范) 如:GasStation/MainCard/Balance## --prefix= : 指定二级前缀(大小写规范) 默认:AdminApi## --baseDir= : 指定一级目录(大小写规范) 默认:Http## --force : 覆盖已存在文件## --filter : 使用filter筛选类## --test : 生成测试文件例子:
    
    //有大小写规范
    
    * Path: AppHttpControllerAdminApiUserExample 
    
    php artisan admin:make-resource testExample --force --baseDir=Http --prefix=AdminApi --module=UserExample
    
    * Path: AppAdminControllerUserExample
    
    php artisan admin:make-resource testExample --force --filter --baseDir=Admin --module=UserExample

    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

  • prefix决定是否在二级前缀内

  • Filter筛选器

    protected $createFilter = false;protected $baseFilterHelperPath = "ModelsTraitsFilter";
  • 默认不开启

  • 生成的filter基类的路径 例: App/Models/Traits/Filter.php

  • 路径生成只遵循$pathFormat中model的inBaseDir规则,不遵循prefix,避免个trait的生成

  • 数据库字段填充

    /**
    
     * 手动配置
    
     * 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 修改默认代码格式

  • 参考各stub配置自定义默认格式

  • 以下stub为简化后的代码习惯,按需修改

  • Generatorstubs*.stub

    <?php
    
    namespace DummyNamespace;
    
    use NamespacedDummyModel;
    
    use NamespacedDummyRequest;
    
    use NamespacedDummyResource;
    
    use NamespacedDummyService;
    
    use BaseNamespaceResourceEmptyResource;
    
    use BaseNamespaceControllerController;
    
    class DummyClass extends Controller
    
    {
    
     public function index(DummyRequest $request){
    
     $validated = $request->validated();
    
     $dummyModels = DummyModel::query()
    
     ->filter($validated)
    
     ->orderByDesc('id')
    
     ->paginate();
    
     return DummyResource::collection($dummyModels);
    
     }
    
     ···
    
    }

    TODO

    1. 前端根据组件生成

    文档

    随手搞个自用的代码生成包laravel-generator

    随手搞个自用的代码生成包laravel-generator: 下面由Laravel教程栏目给大家介绍代码生成包laravel-generator,希望对需要的朋友有所帮助!Laravel-generator 代码生成包https://github.com/HogenYuan/laravel-generatorIntroduction由于最近在做后台,需要类似于Gii的代码生成包,网
    推荐度:
    标签: 生成 随手 的代码
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top