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


Posted in PHP onMarch 18, 2020

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

运行结果如下:

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

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

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
在PHP中使用灵巧的体系结构
Oct 09 PHP
PHP教程 预定义变量
Oct 23 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
PHP中把stdClass Object转array的几个方法
May 08 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
php建立Ftp连接的方法
Mar 07 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
PHP获取学生成绩的方法
Nov 17 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 #PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 #PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 #PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 #PHP
Laravel框架下的Contracts契约详解
Mar 17 #PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 #PHP
PHP代码加密的方法总结
Mar 13 #PHP
You might like
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
PHP中设置时区方法小结
2012/06/03 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
Python自动扫雷实现方法
2015/07/25 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python实现的购物车功能示例
2018/02/11 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python 拼接文件路径的方法
2018/10/23 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
大学生自我鉴定
2013/12/16 职场文书
学生安全责任书范本
2014/07/24 职场文书
安阳殷墟导游词
2015/02/10 职场文书
初中毕业感言300字
2015/07/31 职场文书
法制主题班会教案
2015/08/13 职场文书
八年级数学教学反思
2016/02/17 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
深入理解Pytorch微调torchvision模型
2021/11/11 Python
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript