有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。

我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。

  1. $config = [
  2. 'controllerNamespace' => 'app\commands',
  3. ];

TestController.php代码如下:

  1. <?php
  2.  
  3. namespace app\commands;
  4.  
  5. use YII;
  6. use yii\console\Controller;
  7. use yii\console\ExitCode;
  8. use yii\helpers\Console;
  9.  
  10. //注意控制台程序必须继承自yii\console\Controller
  11. class TestController extends Controller
  12. {
  13. public $param1;
  14. public $param2;
  15. public $param3;
  16.  
  17. //指定用于控制台的选项
  18. public function options($actionID)
  19. {
  20. return [
  21. 'param1',
  22. 'param2',
  23. 'param3',
  24. ];
  25. }
  26.  
  27. //如果这些选项名称太长,可以取个短的别名
  28. public function optionAliases()
  29. {
  30. return [
  31. 'p1' => 'param1',
  32. 'p2' => 'param2',
  33. 'p3' => 'param3',
  34. ];
  35. }
  36.  
  37. // 定义控制台运行的方法
  38. // yii test/test1 -p1=hello -p2=world -p3=!!!
  39. public function actionTest1()
  40. {
  41. echo $this->param1, ' ', $this->param2, ' ', $this->param3, "\n";
  42. return ExitCode::OK;
  43. }
  44.  
  45. // 我们可以获取控制台传过来的参数
  46. // 注意,函数第一个参数,对应控制台传过来的第一个参数,依次类推,不要把顺序搞错了。
  47. // yii test/test2 aa bb cc
  48. public function actionTest2($p1 = '', $p2 = '', $p3 = '')
  49. {
  50. echo $p1, ' ', $p2, ' ', $p3, "\n";
  51. return ExitCode::OK;
  52. }
  53.  
  54. // 当然控制台也可以一次传多个数据过来,这就需要把函数参数声明为一个array
  55. // 控制台传参时就需要把传递的数据通过逗号连接起来,YII2通过处理变成数组
  56. // yii test/test3 aa,bb,cc
  57. public function actionTest3(array $arr)
  58. {
  59. echo implode('--', $arr), "\n";
  60. return ExitCode::OK;
  61. }
  62.  
  63. // 控制台格式和颜色的设置
  64. // yii test/test4
  65. public function actionTest4()
  66. {
  67. //用于控制台输出
  68. $this->stdout('hello', Console::FG_RED);
  69. $this->stdout('world', Console::FG_GREEN);
  70. $this->stdout('!!!', Console::FG_BLUE);
  71. echo "\n";
  72.  
  73. $hello = $this->ansiFormat('hello', Console::FG_RED);
  74. $world = $this->ansiFormat('world', Console::FG_GREEN);
  75. $sigh = $this->ansiFormat('!!!', Console::FG_BLUE);
  76. echo $hello, ' ', $world, ' ', $sigh, "\n";
  77. return ExitCode::OK;
  78. }
  79. }

运行结果如下:

注意,windows下的命令行不会显示颜色。

YII2中使用控制台命令的更多相关文章

  1. Pycharm:在Pycharm中使用控制台命令

    最下方跟Console同行的Terminal,其中输入指令就相当于在cmd命令行窗口输入指令

  2. YII2中日志的配置与使用

    YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用. 我们在config/web.php中配置如下: return [ //log必须在bootstrap期间就被加载,便于及时调度 ...

  3. YII2中使用RBAC对模块,控制器,方法的权限控制以及规则的使用

    在使用YII2中自带的RBAC时,需要先配置config/web.php: return [ // ... 'components' => [ 'authManager' => [ 'cl ...

  4. yii2中commands的简单应用

    class HelloController extends Controller { /** * This command echoes what you have entered as the me ...

  5. yii2中如何使用modal弹窗之基本使用

    作者:白狼 出处:http://www.manks.top/yii2_modal_baseuse.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

  6. 【每日一linux命令6】命令中的命令

    许多命令在执行后,会进入该命令的操作模式,如 fdisk.pine.top 等,进入后我们必须要使用该 命令中的命令,才能正确执行:而一般要退出该命令,可以输入 exit.q.quit 或是按[Ctr ...

  7. Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order      (id  order_name ...

  8. PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子

    因为近期给朋友公司做个门户网站,把荒置了6.7年的PHP又重新拾起,发现PHP这些年兴旺多了,很多新的东西看的不明不白,研究了几个框架ZendFramework.thinkphp.Symfony.yi ...

  9. sublime text2在windows中以命令行启动

    sublime text2在windows中以命令行启动   把执行文件添加到PATH中即可,如图: 如果你和我一样习惯了mac下的简写subl,那么需要在程序目录中新建一个批处理文件subl.bat ...

随机推荐

  1. suse 关于使用 /etc/init.d/boot.local的问题

    最近看了一个问题,有同事在 suse环境下的/etc/init.d/boot.local 中,增加了一行脚本. 该脚本的简单大意如下: #!/bin/bash ] do ] then echo &qu ...

  2. 移动端取消touch高亮效果

    在做移动端页面时,会发现所有a标签在触发点击时或者所有设置了伪类 :active 的元素,默认都会在激活状态时,显示高亮框,如果不想要这个高亮,那么你可以通过css以下方法来禁止: .xxx{ -we ...

  3. Hibernate学习笔记1.2(Annotation版本的Helloworld)

    hibernate 3.0之后开始支持Annotation 接着1.1的项目 首先 需要创建model Teacher.java. package com.hw.hibernate.model; pu ...

  4. Python自动化运维开发实战 三、python文件类型

    导语: python常用的有3种文件类型 1. 源代码 py 2. 字节代码 pyc 3. 优化代码 pyo 源代码: python源代码的文件以”py"为扩展名,由python程序解释,不 ...

  5. Oracle11g服务详细介绍

    Oracle11g服务详细介绍及哪些服务是必须开启的? Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Se ...

  6. python中的文件的读写

    python中的 w+ 的使用方法:不能直接 write() 后,在进行读取,这样试读不到数据的,因为数据对象到达的地方为文件最后,读取是向后读的,因此,会读到空白,应该先把文件对象移到文件首位. f ...

  7. SpringMVC Shiro与filterChainDefinitions

    SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro ...

  8. js 创建对象的几种方法

    1. 使用object创建 var person = new Object(); person.name = "Tom"; person.age = "29"; ...

  9. http4e eclipse plugin 插件介绍

    感谢作者的分享: http://blog.csdn.net/wiker_yong/article/details/10066905 以及作者的破解jar.目前看网站留言说已经git了. 官网链接地址: ...

  10. SpringMVC包括哪些组件

      1 映射器 1.1作用:Handlermapping根据url查找Handler   2 适配器 2.1作用:HandlerAdapter执行Handler   3 解析器 3.1作用:View ...