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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
php rsa加密解密使用详解
Jan 14 PHP
你应该知道PHP浮点数知识
May 13 PHP
php中请求url的五种方法总结
Jul 13 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
Oct 18 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
JS 事件绑定函数代码
2010/04/28 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python实现排序算法解析
2018/09/08 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python编写计算器功能
2019/10/25 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
行政部工作岗位职责范本
2014/03/05 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
松材线虫病防治方案
2014/06/15 职场文书
教师节晚会主持词
2015/06/30 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL