本文实例讲述了YII2框架使用控制台命令的方法。分享给大家供大家参考,具体如下:
有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。
我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。
1
2
3
|
$config = [
'controllerNamespace' => 'app\commands' ,
];
|
TestController.php代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
<?php
namespace app\commands;
use YII;
use yii\console\Controller;
use yii\console\ExitCode;
use yii\helpers\Console;
//注意控制台程序必须继承自yii\console\Controller
class TestController extends Controller
{
public $param1 ;
public $param2 ;
public $param3 ;
//指定用于控制台的选项
public function options( $actionID )
{
return [
'param1' ,
'param2' ,
'param3' ,
];
}
//如果这些选项名称太长,可以取个短的别名
public function optionAliases()
{
return [
'p1' => 'param1' ,
'p2' => 'param2' ,
'p3' => 'param3' ,
];
}
// 定义控制台运行的方法
// yii test/test1 -p1=hello -p2=world -p3=!!!
public function actionTest1()
{
echo $this ->param1, ' ' , $this ->param2, ' ' , $this ->param3, "\n" ;
return ExitCode::OK;
}
// 我们可以获取控制台传过来的参数
// 注意,函数第一个参数,对应控制台传过来的第一个参数,依次类推,不要把顺序搞错了。
// yii test/test2 aa bb cc
public function actionTest2( $p1 = '' , $p2 = '' , $p3 = '' )
{
echo $p1 , ' ' , $p2 , ' ' , $p3 , "\n" ;
return ExitCode::OK;
}
// 当然控制台也可以一次传多个数据过来,这就需要把函数参数声明为一个array
// 控制台传参时就需要把传递的数据通过逗号连接起来,YII2通过处理变成数组
// yii test/test3 aa,bb,cc
public function actionTest3( array $arr )
{
echo implode( '--' , $arr ), "\n" ;
return ExitCode::OK;
}
// 控制台格式和颜色的设置
// yii test/test4
public function actionTest4()
{
//用于控制台输出
$this ->stdout( 'hello' , Console::FG_RED);
$this ->stdout( 'world' , Console::FG_GREEN);
$this ->stdout( '!!!' , Console::FG_BLUE);
echo "\n" ;
$hello = $this ->ansiFormat( 'hello' , Console::FG_RED);
$world = $this ->ansiFormat( 'world' , Console::FG_GREEN);
$sigh = $this ->ansiFormat( '!!!' , Console::FG_BLUE);
echo $hello , ' ' , $world , ' ' , $sigh , "\n" ;
return ExitCode::OK;
}
}
|
运行结果如下:
注意,windows下的命令行不会显示颜色。
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/jkko123/p/8716035.html