Lumen中把 artisan 中的一些命令给省略掉了;万一想用了,怎么办?没关系,为了方便使用我们自己来写一个吧!
artisan make 命令对应的PHP程序放在 Illuminate\Foundation\Console 目录下,我们参照 Illuminate\Foundation\Console\ProviderMakeCommand 类来定义自己的 artisan make:controller 命令
一、创建命令类
\app\Console\Commands\ControllerMakeCommand.php 文件
<?php
namespace App\Console\Commands;
use Illuminate\Console\GeneratorCommand;
class ControllerMakeCommand extends GeneratorCommand {
/**
* create a user defined controller.
*
* @var string
*/
protected $name = 'make:controller'; // @todo:要添加的命令
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new lumen controller '; // @todo: 命令描述
/**
* The type of class being generated.
*
* @var string
*/
protected $type = 'Controller'; // command type
/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub() {
return dirname(__DIR__) . '/stubs/controller.stub'; // @todo: 要生成的文件的模板
}
/**
* Get the default namespace for the class.
*
* @param string $rootNamespace
* @return string
*/
protected function getDefaultNamespace($rootNamespace) {
return $rootNamespace . '\Http\Controllers';//@todo:这里是定义要生成的类的命名空间
}
}
二、创建命令类对应的模版文件
创建模版文件 app\Console\stubs\controller.stub 文件( make 命令生成的类文件的模版),用来定义要生成的类文件的通用部分: 用的时候把注释去掉
<?php
namespace DummyNamespace; // 要生成类的命名空间
class DummyClass extends BaseController /*我这里继承的是BaseController */
{
public function index() { // 这里就是要生成的类文件的方法通用代码了
# code...
}
}
// 注意,这里后缀文件后缀名一定是stub!!!!!!!!!!!!!
三、注册命令类
将 ControllerMakeCommand
添加到 App\Console\Kernel.php
中
protected $commands = [
Commands\ControllerMakeCommand::class,
];
四、执行命令试试成功了没有
php artisan make:controller v1/UserController
如果成功的话就会在v1目录下创建UserController.php文件
<?php
namespace DummyNamespace;
class DummyClass extends BaseController
{
public function index() {
# code...
}
}