您现在的位置是:首页 > 技术博客 > Laravel自定义Artisan命令生成Server类

Laravel自定义Artisan命令生成Server类

2021-08-25文远技术博客575413

在开发中,有时候我们会使用到基于控制器Controller和模型Model之间在加一层Server类。那么用laravel的Artisan命令可以生成模型和控制器文件,怎样生成Server类使我们更加方便呢?

首先,新建一个类,代码和命名空间如下

namespace App\Console\Commands;

use Illuminate\Console\GeneratorCommand;
class ServerCommand extends GeneratorCommand { /** * console命令的名称和签名. * * @var string */ protected $name = 'make:server'; /** * 控制台命令说明. * * @var string */ protected $description = '创建server类'; /** * 命令类型 * @var string */ protected $type = 'server'; /** * 指定模板地址 * @return string * @author: lzjian 2021/8/24 18:01 */ protected function getStub() { return __DIR__ . '/Sub/Server.stub'; } /** * 返回命名空间 * @param string $rootNamespace * @return string * @author: lzjian 2021/8/25 10:22 */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace . '/Server'; } }

我们需要注意的点

getStub方法是指定模板地址,这个模板就是你生成server类的模板,一般我们放在(当前类目录下)App\Console\Commands\Sub\Server.stub,后缀一般用stub命名。模板内容如下



namespace {{ namespace }};

class {{ class }}
{
    public function __construct()
    {
    }
}

当然你也可以定义其他方法,生成文件的时候,会自动替换{{ namespace }} 和 {{ class }}的内容。

ServerCommand类完成以后,我们把他注册到全局。在App\Console\Kernel.php里的$commands变量中注册添加

protected $commands = [
    \App\Console\Commands\ServerCommand::class,
];


控制台输入php artisan list

会看到在make下面有我们的命令及其描述:make:server             创建server类

控制台输入php artisan make:server Admin/LoginServer

会在app\Server\Admin下生成LoginServer类


文章评论

看完文章了吗?谁便说点吧

发表 captcha

暂无评论