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 相关文章推荐
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
PHP Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
php下载文件的代码示例
Jun 29 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
更改localhost为其他名字的方法
Feb 10 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
php获取POST数据的三种方法实例详解
Dec 20 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 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
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
JavaScript 高效运行代码分析
2010/03/18 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
python基于socket函数实现端口扫描
2020/05/28 Python
基于opencv实现简单画板功能
2020/08/02 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
水电工岗位职责
2014/02/12 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2014年药房工作总结
2014/11/22 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
高中语文教学反思范文
2016/02/16 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
Python语言中的数据类型-序列
2022/02/24 Python