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 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
php5与php7的区别点总结
Oct 11 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 PHP
基于PHP实现短信验证码发送次数限制
Jul 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+mysql保存和输出文件
2006/10/09 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
javascript之锁定表格栏位
2007/06/29 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
python去除扩展名的实例讲解
2018/04/23 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
党员个人思想汇报
2013/12/28 职场文书
办理居住证介绍信
2014/01/15 职场文书
自我反省检讨书
2014/01/23 职场文书
教学器材管理制度
2014/01/26 职场文书
公司员工安全协议书
2014/11/21 职场文书
男生贾里读书笔记
2015/06/30 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python