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;
}
}
运行结果如下:

注意,windows下的命令行不会显示颜色。
YII2中使用控制台命令的更多相关文章
- Pycharm:在Pycharm中使用控制台命令
最下方跟Console同行的Terminal,其中输入指令就相当于在cmd命令行窗口输入指令
- YII2中日志的配置与使用
YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用. 我们在config/web.php中配置如下: return [ //log必须在bootstrap期间就被加载,便于及时调度 ...
- YII2中使用RBAC对模块,控制器,方法的权限控制以及规则的使用
在使用YII2中自带的RBAC时,需要先配置config/web.php: return [ // ... 'components' => [ 'authManager' => [ 'cl ...
- yii2中commands的简单应用
class HelloController extends Controller { /** * This command echoes what you have entered as the me ...
- yii2中如何使用modal弹窗之基本使用
作者:白狼 出处:http://www.manks.top/yii2_modal_baseuse.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...
- 【每日一linux命令6】命令中的命令
许多命令在执行后,会进入该命令的操作模式,如 fdisk.pine.top 等,进入后我们必须要使用该 命令中的命令,才能正确执行:而一般要退出该命令,可以输入 exit.q.quit 或是按[Ctr ...
- Yii2中多表关联查询(join、joinwith)
我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name ...
- PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子
因为近期给朋友公司做个门户网站,把荒置了6.7年的PHP又重新拾起,发现PHP这些年兴旺多了,很多新的东西看的不明不白,研究了几个框架ZendFramework.thinkphp.Symfony.yi ...
- sublime text2在windows中以命令行启动
sublime text2在windows中以命令行启动 把执行文件添加到PATH中即可,如图: 如果你和我一样习惯了mac下的简写subl,那么需要在程序目录中新建一个批处理文件subl.bat ...
随机推荐
- Linux通配符与基础正则表达式、扩展正则表达式
在Linux命令行操作或者SHELL编程中总是容易混淆一些特殊字符的使用,比如元字符‘*’号,作为通配符匹配文件名时表示0个到无穷多个任意字符.而作为正则表达式匹配字符串时,表示重复0个到无穷多个的前 ...
- react设置innerHTML
<!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8" ...
- 24 week 4 安装 docker
安装docker 出现问题 解决办法https://blog.csdn.net/VOlsenBerg/article/details/70140211 发现链接超时,然后就https://blog.c ...
- IIS8.0 部署WCF Services
今天在Win 8的IIS上部署WCF Services,访问SVC文件时出现找不到处理程序的错误,以前遇到这个问题时都是尝试通过注册asp.net的方式处理一下,但是在Win8下这招不灵了,出现如下提 ...
- 连接mysql连接不上遇到的问题
连接不上mysql ,启动mysqld进程,发现可以启动成功,但几秒后进程立马关闭了,后来发现主要原因是因为磁盘空间满了. 报错: Can't connect to local MySQL serve ...
- 吴裕雄 13-MySQL UPDATE 查询
以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:UPDATE table_name SET field1=new-value1, field2=new-value2[WHE ...
- NTKO OFFICE文档控件
目录 前言 什么是ntko 准备工作 实战演练 总结 一.前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便. ...
- jquery.cookie介绍和用法
1.依赖jQuery库 2.浏览器兼容性情况 3.下载 官方github:https://github.com/carhartl/jquery-cookie 4.使用 创建一个整站cookie $.c ...
- 部署Java的运行环境
1.先去官网下载最新的jdk 网址:http://www.oracle.com/technetwork/java/javase/downloads/ 2.用tar zxvf解压相应的文档到相应的路径 ...
- git flow分支管理
阅读目录 两种核心分支 三种临时分支 Git Flow流程示例代码 Git Flow工具 分支命名规范 总结 git flow是Vincent Driessen提出了一个分支管理的策略,非常值得借鉴. ...