YII2框架使用控制台命令的方法分析
这篇文章主要介绍了YII2框架使用控制台命令的方法,结合实例形式分析了YII2使用控制台命令的相关步骤、原理与操作技巧,需要的朋友可以参考下
本文实例讲述了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; } } |
运行结果如下: