创建控制台命令程序
1、控制台命令继承自 yii\console\Controller控制器类
2、在控制器类中,定义一个或多个动作,动作与控制台子命令相对应
3、在动作方法中实现业务需求的代码

运行控制台命令程序
1、通过执行应用根目录yii脚本执行
2、脚本命令后跟指定的路由:控制器ID/动作ID

一个控制台命令demo:

首先在 console/controllers目录项目创建一个 HelloController.php 文件

namespace console\controllers;

use Yii;
use yii\console\Controller; class HelloController extends Controller
{
public function actionTest()
{
echo "Hello World \n";
}
}

如果需要执行,先切换到根目录,然后执行控制台命令

yii hello/test 即可

 

带参数的控制台命令程序
1、控制台命令程序可以接受参数,参数将传递个命令对应的动作方法;
2、第一个参数对应第一个参数,第二个参数对应第二个参数,依次类推
3、可以使用数组作为参数,数组参数用逗号隔开字符串生成;
4、如果没有足够的参数,会提示出错,除非参数设定了默认值。

namespace console\controllers;

use Yii;
use yii\console\Controller; class HelloController extends Controller
{
/**
* @purpose 控制台命令传入单个参数
* @param $name
*/
public function actionWho($name)
{
echo "Hello $name \n";
} /**
* @purpose 控制台命令传入的参数为数组
* @param $names
*/
public function actionAll(array $names)
{
var_dump($names);
}
}

1、传入单个参数: yii hello/who daicr 

2、传入的参数为数组yii hello/all daicr ,gy

带有选项的控制台命令程序
1、覆盖在 yii\console\Controller::options() 中的方法,这个方法应该返回控制器类的属性列表
2、当运行一个命令时,使用语法为:--optionName=optionValue 来传递给对应的属性,值 optionValue警徽分配到optionName属性
3、自Yii2.0.8之后,可用用 optionAliases() 方法来增加选项别名,从而简化命令中选项的输入

namespace console\controllers;

use Yii;
use yii\console\Controller; class HelloController extends Controller
{
public $rev = ''; // 定义参数 /**
* @purpose 覆盖在 yii\console\Controller::options() 中的方法,返回控制器类的属性列表
* @return array
*/
public function options()
{
return ['rev'];
} /**
* @purpose 增加选项别名(Yii2.0.8之后)
* @return array
*/
public function optionAliases()
{
return ['r' => 'rev'];
} public function actionDemo()
{
if($this->rev == 1){
echo strrev('hello world') . "\n";
}else{
echo "hello world \n";
}
}
}

使用控制台选项: yii hello/demo --r=1

yii创建控制台命令的更多相关文章

  1. Yii通过控制台命令创建定时任务

    假设Yii项目路径为 /home/apps/ 1. 创建文件 /home/apps/protected/commands/crons.php <?php $yii = '/home/apps/f ...

  2. Laravel 5.1 中创建自定义 Artisan 控制台命令实例教程

    1.入门 Laravel通过Artisan提供了强大的控制台命令来处理非浏览器业务逻辑.要查看Laravel中所有的Artisan命令,可以通过在项目根目录运行: php artisan list 对 ...

  3. Laravel创建自定义 Artisan 控制台命令实例教程

    来源:http://laravelacademy.org/post/1374.html 1.入门 Laravel通过Artisan提供了强大的控制台命令来处理非浏览器业务逻辑.要查看Laravel中所 ...

  4. Yii2之控制台命令篇(console)

    控制台命令 Yii 中有一个拥有丰富功能的控制台,它们主要用于创建网站后台处理的任务.在项目根目录下执行相关操作,有意思的事,可以通过 yii 自带的功能,列出当前已有的命令. 1.查看当前项目控制台 ...

  5. 实用Linux控制台命令

    实用Linux控制台命令 screen 例如用Xshell连接 服务器 screen -ls 列出当前用户所有的screen screen 回车直接创建新的screen screen -S scree ...

  6. RocketMQ控制台命令

    本文未完成,有空再补充,不小心发布了,抱歉 Rocket版本:4.3.0 这几天在整RocketMQ,可谓是困难重重,其中关于控制台的命令,网上的都是一半一半的, 所以我打算直接用整一个完整的官方的命 ...

  7. 浏览器控制台命令调试——console

    控制台命令调试时通过浏览器开发工具中的控制台命令嵌入到JavaScript中,输出特定的信息或日志,从而达到调试的目的. 我们常用的Chrome和FireFox,都可以通过F12来打开开发工具. 下面 ...

  8. 控制台命令行API

    js调试系列: 控制台命令行API   上次初步介绍了什么是控制台<js调试系列: 初识控制台>,以及简单的 console.log 输出信息.最后还有两个小问题,我们就当回顾,来看下怎么 ...

  9. 十分钟通过 NPM 创建一个命令行工具

    大过年的,要不要写点代码压压惊?来花十分钟学一下怎么通过 NPM 构建一个命令行工具. 写了一个小 demo,用于代替 touch 的创建文件命令 touchme ,可以创建自带“佛祖保佑”注释的文件 ...

随机推荐

  1. python指定分隔符来分割文件

    1 import re 2 p = re.compile('AAAAAAAA',re.S) 3 f = open(r"D:\test\oldfile.txt","r&qu ...

  2. 磁盘修改AF

    请严格按照如下流程: 1 以管理员打开 硬盘安装助手 2 选择苹果Mac系统镜像 (cdr格式的) 3 直接选择要写入的盘,不要点击右边的方框中的勾选 (此时就可以写入了,虽然最后还是显示 Chang ...

  3. Java装饰者模式

    定义:在不改变原有对象的基础上,将功能附加到对象自上 提供了比继承更有弹性的替代方案(扩展原有对象功能) 类型:结构型 扩展一个类的功能或给一个类添加附加职责 动态的给一个对象添加功能,这些功能可以再 ...

  4. 一键安装基于dns的高可用k8s集群(3节点,etcd https)

    在公司,使用dns切换,可能会比keepalived+haproxy,更精简的易维护. 毕竟,高可用只是偶尔切换,不是时时切换. 且dns解析在自己可控时,更不会影响k8s线上使用了. (部分代码,由 ...

  5. 源码编译安装net-snmp

    https://blog.csdn.net/u013992330/article/details/79712405 https://wenku.baidu.com/view/24368a2257125 ...

  6. 【bzoj1042】[HAOI2008]硬币购物 背包dp+容斥原理

    题解: 计数题 首先考虑容斥 这题很明显加了限制状态就很多 考虑没有限制 显然可以直接dp 然后 我们看一下 容斥 某一个使用>=k张 那么其实就是 f[i-k*c[]] 于是这样就可以做了

  7. [转]Ubuntu /home下中文目录如何修改成英文?

    http://www.linuxidc.com/Linux/2016-05/130873.htm 打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk- ...

  8. JS如何监听动画结束

    场景描述 在使用JS控制动画时一般需要在动画结束后执行回调去进行DOM的相关操作,所以需要监听动画结束进行回调.JS提供了以下事件用于监听动画的结束,简单总结学习下. CSS3动画监听事件 trans ...

  9. 【演示】在CSS里用calc进行计算

    请阅读 在CSS里用calc进行计算   下面的元素的width,padding,margin都使用了CSS calc进行计算. 简单计算: 100% – 100px 这是经过简单计算的元素宽度 复杂 ...

  10. redis中实现redis-cli任意目录执行