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 相关文章推荐
Zend framework处理一个http请求的流程分析
Feb 08 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
PHP Directory 函数的详解
Mar 07 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
PHP魔术方法的使用示例
Jun 23 PHP
Zend Framework数据库操作方法实例总结
Dec 11 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 array_search() 函数使用
2010/04/13 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
使用python实现rsa算法代码
2016/02/17 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Numpy掩码式数组详解
2018/04/17 Python
Python logging模块handlers用法详解
2020/08/14 Python
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
大学四年职业生涯规划书范文
2014/01/02 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
房地产广告词大全
2014/03/19 职场文书
学生吸烟检讨书
2014/09/14 职场文书
软件测试专业推荐信
2014/09/18 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
个人维稳承诺书
2015/05/04 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
关于Numpy之repeat、tile的用法总结
2021/06/02 Python