当前位置:首页 > CMS教程 > 其它CMS > 列表

YII2框架使用控制台命令的方法分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-21 09:31:10 浏览: 评论:0 

本文实例讲述了YII2框架使用控制台命令的方法,分享给大家供大家参考,具体如下:

有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。

我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。

  1. $config = [ 
  2.     'controllerNamespace' => 'app\commands', 
  3. ]; 

TestController.php代码如下:

  1. <?php 
  2.  
  3. namespace app\commands; 
  4.  
  5. use YII; 
  6. use yii\console\Controller; 
  7. use yii\console\ExitCode; 
  8. use yii\helpers\Console; 
  9.  
  10. //注意控制台程序必须继承自yii\console\Controller 
  11. class TestController extends Controller 
  12. { 
  13.   public $param1; 
  14.   public $param2; 
  15.   public $param3; 
  16.  
  17.   //指定用于控制台的选项 
  18.   public function options($actionID) 
  19.   { 
  20.     return [ 
  21.       'param1', 
  22.       'param2', 
  23.       'param3', 
  24.     ]; 
  25.   } 
  26.  
  27.   //如果这些选项名称太长,可以取个短的别名 
  28.   public function optionAliases() 
  29.   { 
  30.     return [ 
  31.       'p1' => 'param1', 
  32.       'p2' => 'param2', 
  33.       'p3' => 'param3', 
  34.     ]; 
  35.   } 
  36.  
  37.   // 定义控制台运行的方法 
  38.   // yii test/test1 -p1=hello -p2=world -p3=!!! 
  39.   public function actionTest1() 
  40.   { 
  41.     echo $this->param1, ' ', $this->param2, ' ', $this->param3, "\n"; 
  42.     return ExitCode::OK; 
  43.   } 
  44.  
  45.   // 我们可以获取控制台传过来的参数 
  46.   // 注意,函数第一个参数,对应控制台传过来的第一个参数,依次类推,不要把顺序搞错了。 
  47.   // yii test/test2 aa bb cc 
  48.   public function actionTest2($p1 = '', $p2 = '', $p3 = '') 
  49.   { 
  50.     echo $p1, ' ', $p2, ' ', $p3, "\n"; 
  51.     return ExitCode::OK; 
  52.   } 
  53.  
  54.   // 当然控制台也可以一次传多个数据过来,这就需要把函数参数声明为一个array 
  55.   // 控制台传参时就需要把传递的数据通过逗号连接起来,YII2通过处理变成数组 
  56.   // yii test/test3 aa,bb,cc 
  57.   public function actionTest3(array $arr) 
  58.   { 
  59.     echo implode('--', $arr), "\n"; 
  60.     return ExitCode::OK; 
  61.   } 
  62.  
  63.   // 控制台格式和颜色的设置 
  64.   // yii test/test4 
  65.   public function actionTest4() 
  66.   { 
  67.     //用于控制台输出 
  68.     $this->stdout('hello', Console::FG_RED); 
  69.     $this->stdout('world', Console::FG_GREEN); 
  70.     $this->stdout('!!!', Console::FG_BLUE); 
  71.     echo "\n"; 
  72.  
  73.     $hello = $this->ansiFormat('hello', Console::FG_RED); 
  74.     $world = $this->ansiFormat('world', Console::FG_GREEN); 
  75.     $sigh = $this->ansiFormat('!!!', Console::FG_BLUE); 
  76.     echo $hello, ' ', $world, ' ', $sigh, "\n"; 
  77.     return ExitCode::OK; 
  78.   } 
  79. } 

运行结果如下:

YII2框架使用控制台命令的方法分析

注意,windows下的命令行不会显示颜色。

Tags: YII2控制台命令

分享到: