Laravel自定义Make命令生成目标类

Laravel框架 专栏收录该内容
72 篇文章 0 订阅

一、背景知识

  1. laravel中的make:controller的源码位置如下:

    vendor\laravel\framework\src\Illuminate\Routing\Console\ControllerMakeCommand.php

  2. 其他的生成命令的位置如下:

    vendor\laravel\framework\src\Illuminate\Foundation\Console

  3. 类模板文件
    Console\stubs里面的文件,就是存储类模板目录,以.stub结尾。
    controller.plain.stub该文件就是make:controller生成的类的模板。
  4. Stub 定制
    如果你只是想定制官方类的生成方式,可以参考官方文档Stub 定制解决。

二、自定义make方法

  1. 生成命令文件
    初次使用,可以使用生成命名的方式,生成命令文件,然后,再按照要求更改即可。
    php artisan make:command BuildUtils
    
    这样就在app\Console\Commands生成了一个BuildUtils.php文件。
  2. 修改继承类以及内部代码
    把继承类修改成GeneratorCommand,该类的命名空间为Illuminate\Console\GeneratorCommand
  3. Stub的目录
    自己的Stub的目录,我存放在[根目录]\stubs文件夹下面。名称为utils.plain.stub

三、成品示例

这是我修改的生成工具类的命令

<?php

namespace App\Console\Commands;

use Illuminate\Console\GeneratorCommand;

class BuildUtils extends GeneratorCommand
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'make:utils';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '创建一个utils类';

    /**
     * The type of class being generated.
     *
     * @var string
     */
    protected $type = 'Controller';

    /**
     * Get the stub file for the generator.
     *
     * @return string
     */
    protected function getStub()
    {
        return $this->laravel->basePath('/stubs/utils.plain.stub');
    }

    /**
     * Get the default namespace for the class.
     *
     * @param  string  $rootNamespace
     * @return string
     */
    protected function getDefaultNamespace($rootNamespace)
    {
        return $rootNamespace.'\Utils';
    }
}

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值