下面由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 hogen\laravel-generatorphp artisan vendor:publish --tag=generator
config/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\examplephp artisan admin:make-resource testexample --force --filter --basedir=admin --module=user\example
deployment自定义配置
generator\makeresource.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 = 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
<?phpnamespace 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
前端根据组件生成以上就是随手搞个自用的代码生成包laravel-generator的详细内容。