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面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
解析php dirname()与__FILE__常量的应用
Jun 24 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP加密技术的简单实现
Sep 04 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
简述php环境搭建与配置
Dec 05 PHP
PDO::errorCode讲解
Jan 28 PHP
Laravel登录失败次数限制的实现方法
Aug 26 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下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
Python内置函数dir详解
2015/04/14 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
python实现简单俄罗斯方块
2020/03/13 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
小学语文业务学习材料
2014/06/02 职场文书
财务会计专业求职信
2014/06/09 职场文书
森林防火标语
2014/06/23 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
运动会通讯稿600字
2015/07/20 职场文书
课程设计感想范文
2015/08/11 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书