YII2框架使用控制台命令的方法分析
程序员文章站
2023-11-21 20:37:16
本文实例讲述了yii2框架使用控制台命令的方法。分享给大家供大家参考,具体如下:有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。我们在commands目录下创建t...
本文实例讲述了yii2框架使用控制台命令的方法。分享给大家供大家参考,具体如下:
有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。
我们在commands目录下创建testcontroller.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。
$config = [ 'controllernamespace' => 'app\commands', ];
testcontroller.php代码如下:
<?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下的命令行不会显示颜色。