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

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

ebc12e25a2a7d34f8836452bc82a219b.png

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 的字段

Installationcomposer require hogen\laravel-generator

php artisan vendor:publish --tag=generatorconfig/app.php'providers' => [

··· App\Console\Commands\Generator\GeneratorServiceProvider::class];

Run请先根据自己的框架目录和代码格式修改默认代码格式stub文件## 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自定义配置

Generator\MakeResource.phpprotected $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 = "Models\Traits\Filter";默认不开启

生成的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为简化后的代码习惯,按需修改

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('id')

->paginate();

return DummyResource::collection($dummyModels);

}

···

}

TODO前端根据组件生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值