本文实例讲述了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