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 相关文章推荐
php4的彩蛋
Oct 09 PHP
收集的php编写大型网站问题集
Mar 06 PHP
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
php 删除数组元素
Jan 16 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
php生成QRcode实例
Sep 22 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 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数组操作――获取数组最后一个值的方法
2015/04/14 PHP
jquery动态加载图片数据练习代码
2011/08/04 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
python定时器使用示例分享
2014/02/16 Python
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
python实现telnet客户端的方法
2015/04/15 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
通息工程毕业生自荐信
2013/10/16 职场文书
生产内勤岗位职责
2013/12/07 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
表扬稿格式范文
2015/01/16 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
PHP设计模式(观察者模式)
2021/07/07 PHP
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS