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 strtotime函数详解
Dec 18 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
深入PHP magic quotes的详解
Jun 17 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
三种php连接access数据库方法
Nov 11 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
php中curl和file_get_content的区别
May 10 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 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 高手之路(一)
2006/10/09 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
python Gabor滤波器讲解
2020/10/26 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
实习鉴定范文
2013/12/19 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
企业年会主持词
2014/03/27 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
办公用品管理制度
2015/08/04 职场文书
2016年公司新年寄语
2015/08/17 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB