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

运行结果如下:

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

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

Tags: YII2控制台命令

分享到: