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数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
php的dl函数用法实例
Nov 06 PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 PHP
php array_keys 返回数组的键名
Oct 25 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
PHP对象相关知识总结
Apr 09 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP设置进度条的方法
2015/07/08 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
vue模板语法-插值详解
2017/03/06 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
初步解析Python中的yield函数的用法
2015/04/03 Python
python脚本内运行linux命令的方法
2015/07/02 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
python使用knn实现特征向量分类
2018/12/26 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
婚礼新郎父母答谢词
2014/01/16 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
行政复议决定书
2015/06/24 职场文书
超市店长竞聘书
2015/09/15 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang