【转】laravel之Artisan命令操作Artisan Console

本文文档适用于laravel5.2版本,其他版本参考。

artisan 命令查询

php artisan list

artisan 帮助

php artisan help

有没想过自己写一些命令,然后通过artisan执行呢,根据文档,我们来一一操作

创建

php artisan make:console SendEmails
#带命令写入
php artisan make:console SendEmails --command=emails:send

这个时候生成:app\Console\Commands\SendEmails.php文件

解析文件

namespace App\Console\Commands; use Illuminate\Console\Command; class SendEmails extends Command { /** * The name and signature of the console command. *控制台的命令指令,exp:php artisan emails:seed * @var string */ protected $signature = 'emails:send'; /** * The console command description. *描述 * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. *执行命令 * @return mixed */ public function handle() { } } 

传值

#必须传值
protected $signature = 'email:send {user}'; php artisan email:send 1(必须有这个,否则报错) #可有可无传值 protected $signature = 'email:send {user?}'; php artisan email:send 1(可有可无) #默认值 protected $signature = 'email:send {user=1024}'; php artisan email:send 1(可有可无) 

开关传递

开关:表示一开一关,换成返回未:1/0,true/false

protected $signature = 'email:send {user} {--queue}'; // --queue这个名字可以随便取,避免认为是队列, //如果--queue开关被传递,其值是true,否则其值是false: php artisan email:send 1 --queue 

开关分配值

//选项值被用户通过=来分配:
protected $signature = 'email:send {user} {--queue=}'; php artisan email:send 1 --queue='on' 

选项别名

email:send {user} {--Q|queue} 

定义参数和选项以便指定输入数组

这没看懂,不知道在控制台怎么传值

email:send {user*}
email:send {user} {--id=*} 

获得传值

argument和option

// 获取指定选项...
$queueName = $this->option('queue'); // 获取所有选项... $options = $this->option() 

输入提示

/**
 * 执行控制台命令
 *
 * @return mixed
 */
public function handle(){ $name = $this->ask('What is your name?'); $password = $this->secret('What is the password?');//隐藏 } //用户确认 if ($this->confirm('Do you wish to continue? [y|N]')) { // } 

索引选择

$name = $this->choice('What is your name?', ['Taylor', 'Dayle'], false); 选择,0,1,... 

输出,反馈信息

line,info, comment, question 和 error方法

//要显示一条错误消息,使用error方法。错误消息文本通常是红色:
$this->error('Something went wrong!'); //如果你想要显示原生输出,可以使用line方法,该方法输出的字符不带颜色: $this->line('Display this on the screen'); //表格布局 $headers = ['Name', 'Email']; $users = App\User::all(['name', 'email'])->toArray(); $this->table($headers, $users); 

进度条

$users = App\User::all(); $this->output->progressStart(count($users)); foreach ($users as $user) { $this->performTask($user); $this->output->progressAdvance(); } $this->output->progressFinish(); 

更多查看(http://symfony.com/doc/2.7/components/console/helpers/progressbar.html)

注册命令

app/Console/Kernel.php 把这个文件导入,

protected $commands = [
   'App\Console\Commands\SendEmails' ];` 

CLI之外执行Artisan命令

Route::get('/foo', function () { $exitCode = Artisan::call('email:send', [ 'user' => 1, '--queue' => 'default' ]); }); //需要指定不接收字符串的选项值 $exitCode = Artisan::call('migrate:refresh', [ '--force' => true, ]); 

使用Artisan上的queue队列

Route::get('/foo', function () { Artisan::queue('email:send', [ 'user' => 1, '--queue' => 'default' ]); }); 

通过其他命令调用命令

已存在的Artisan命令中调用其它命令

/**
 * 执行控制台命令
 *
 * @return mixed
 */
public function handle(){ $this->call('email:send', [ 'user' => 1, '--queue' => 'default' ]); } 

调用其它控制台命令并阻止其所有输出

$this->callSilent('email:send', [ 'user' => 1, '--queue' => 'default' ]); 
 
 
2人点赞
 
laravel
 
from:https://www.jianshu.com/p/a880a494d122

猜你喜欢

转载自www.cnblogs.com/xuan52rock/p/12487124.html
今日推荐