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 相关文章推荐
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
php批量上传的实现代码
Jun 09 PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
PHP切割汉字的常用方法实例总结
Apr 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
jquery 使用简明教程
2014/03/05 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
python实现连接mongodb的方法
2015/05/08 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
实习自我鉴定范文
2013/10/30 职场文书
档案管理员岗位职责
2013/12/01 职场文书
实习单位评语
2014/04/26 职场文书
奥林匹克的口号
2014/06/13 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
音乐幼师求职信
2014/07/09 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
孝女彩金观后感
2015/06/10 职场文书
创业计划书之物流运送
2019/09/17 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript