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 相关文章推荐
example1.php
Oct 09 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php操作memcache缓存方法分享
Jun 03 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP中PDO事务处理操作示例
May 02 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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
解析argc argv在php中的应用
2013/06/24 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
python中正则表达式的使用详解
2014/10/17 Python
Python 自动补全(vim)
2014/11/30 Python
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
详解Python装饰器
2019/03/25 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
C++程序员求职信范文
2014/04/14 职场文书
IT工程师岗位职责
2014/07/04 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
关于上班时间调整的通知
2015/04/23 职场文书