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

这篇博客介绍了如何在 Laravel 中自定义 `make:controller` 命令,包括查看源码位置,修改类模板,以及创建和定制自己的生成命令。作者通过实例展示了如何创建 `BuildUtils` 命令,改变默认模板并指定新的 Stub 文件路径。
摘要由CSDN通过智能技术生成

一、背景知识

  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';
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值