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 相关文章推荐
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
深入PHP数据缓存的使用说明
May 10 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
php实现字符串反转输出的方法
Mar 14 PHP
php 类自动载入的方法
Jun 03 PHP
windows下apache搭建php开发环境
Aug 27 PHP
Smarty实现页面静态化(生成HTML)的方法
May 23 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
php png失真的原因及解决办法
Nov 17 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生成二维码的两种方法(带logo图像)
2014/03/14 PHP
php表单提交实例讲解
2015/11/12 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python解决鸡兔同笼问题的方法
2014/12/20 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python的Django框架中的数据库配置指南
2015/07/17 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
python3 kubernetes api的使用示例
2021/01/12 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
网络专业学生个人的自我评价
2013/12/16 职场文书
我未来的职业规划范文
2014/01/11 职场文书
2014年团委工作总结
2014/11/13 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
css height属性中的calc方法详解
2021/06/03 HTML / CSS
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript