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 相关文章推荐
改变Apache端口等配置修改方法
Jun 05 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
php中explode函数用法分析
Nov 15 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
php实现微信发红包
Dec 05 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
PHP加MySQL消息队列深入理解
Feb 27 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP 地址栏信息的获取代码
2009/01/07 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
详解javascript脚本何时会被执行
2021/02/05 Javascript
利用Python抓取行政区划码的方法
2016/11/28 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
学生社团文化节开幕式主持词
2014/03/28 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
合作意向书怎么写
2019/06/24 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL