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 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
php curl模拟post请求小实例
Nov 13 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP函数超时处理方法
Feb 14 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 PHP
Yii2框架中一些折磨人的坑
Dec 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
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
js常用系统函数用法实例分析
2015/01/12 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
python自动化测试实例解析
2014/09/28 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
网络销售员岗位职责
2015/04/11 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
用Python爬取某乎手机APP数据
2021/06/15 Python