1 Artisan命令行
Artisan 是 Laravel 自带的命令行接口, 它提供了相当多的命令来帮助你构建 Laravel 应用。 你可以通过 list 命令查看所有可用的 Artisan 命令:
php artisan list
除 Artisan 提供的命令外,你也可以编写自己的自定义命令。命令在多数情况下位于 app/Console/Commands 目录中;不过,只要你的命令可以由 Composer 加载,你就可以自由选择自己的存储位置。如果要创建自己的命令,可以使用以下指令:
php artisan make:command 命令文件
$signature 属性:命令名称
$description 属性:命令描述
handle 方法:命令执行的内容
创建SayCommand.php如下:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class SayCommand extends Command
{
/**命令名称
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'hello:world';
/**命令描述
* The console command description.
*
* @var string
*/
protected $description = '创建 say';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
//业务逻辑
echo 'hello world';
}
}
执行php artisan hello:world会直接输出 hello world
2 Artisan创建文件
如果想要类似于框架提供给我们的类似于创建控制器、模型等文件。我们需要在创建的 command 类中继承 Illuminate\Console\GeneratorCommand 类,与上述执行逻辑不同的是,这里在创建文件时还需要搭配一个模板文件 - 一般以 .stub 作为后缀。
该文件中包含以下内容:
$name 属性:命令名称
$description 属性:命令描述
getStub 方法:生成器/模板 的存根文件
getDefaultNamespace 方法:类的默认名称空间
可以参考 Illuminate\Foundation\Console 目录下的文件。
创建HelloCommand.php如下:
namespace App\Console\Commands;
use Illuminate\Console\GeneratorCommand;
class HelloCommand extends GeneratorCommand
{
# 命令名称
protected $name = 'make:hello';
# 描述
protected $description = '创建 hello';
# 类型
protected $type = 'Model';
# 获取模板文件
protected function getStub()
{
return __DIR__ . '/stubs/hello.stub';
}
protected function getDefaultNamespace($rootNamespace)
{
return $rootNamespace . '\Hello';
}
}
创建app/Console/Commands/stubs/hello.stub如下:
<?php
namespace {{ namespace }};
class {{ class }}
{
}
在app/Console/Kernel.php中注册
protected $commands = [
//
HelloCommand::class,
];
运行php artisan make:hello Say可以生成Say.php
namespace App\Hello;
class Say
{
}