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 ...
随机推荐
- [PHP]PHP定时任务的实现
---------------------------------------------------------------------------------------------------- ...
- week05 06绑定滚动条 去抖动
像这种小代码 为了满足某种需求 可以直接上网搜 这些都是JS代码和react无关 我们下拉 就会触发事件从而调用loading more news 那个函数 react要求我们加个key key就是唯 ...
- Java happen-before
下面是happens-before原则规则: 程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作: 锁定规则:一个unLock操作先行发生于后面对同一个锁额lock操作 ...
- linux 内核启动流程
Linux内核启动流程详细分析: http://www.linuxidc.com/Linux/2014-10/108034.htm ARM Linux内核启动过程: http://blog.csdn. ...
- elastastic search
curl -X PUT "10.97.184.40:9200/logstash-2015.05.18" -H 'Content-Type: application/json' -d ...
- DNS域名解析中A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR各项记录的作用
名注册完成后首先需要做域名解析,域名解析就是把域名指向网站所在服务器的IP,让人们通过注册的域名可以访问到网站.IP地址是网络上标识服务器的数字地址,为了方便记忆,使用域名来代替IP地址.域名解析就是 ...
- centos6安装nginx
1.获取官方的仓库地址 我们需要先访问nginx的官方网站,获取官方的仓库地址https://nginx.org/en/linux_packages.html#stable 新建/etc/yum.re ...
- 【pyspider】关于匹配html的数据
今天刚刚接触pyspider,在调试的时候注意匹配数据可以这样写: <div class="download-wp"> <a data-app-i ...
- Access sql语句创建表及字段类型(转)
http://www.cnblogs.com/hnyei/archive/2012/02/23/2364812.html 创建一张空表: Sql="Create TABLE [表名]&quo ...
- php打印错误报告
//error handler functionfunction customError($errno, $errstr){ echo "<b>Error:</b> ...