yii创建控制台命令
创建控制台命令程序
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创建控制台命令的更多相关文章
- Yii通过控制台命令创建定时任务
假设Yii项目路径为 /home/apps/ 1. 创建文件 /home/apps/protected/commands/crons.php <?php $yii = '/home/apps/f ...
- Laravel 5.1 中创建自定义 Artisan 控制台命令实例教程
1.入门 Laravel通过Artisan提供了强大的控制台命令来处理非浏览器业务逻辑.要查看Laravel中所有的Artisan命令,可以通过在项目根目录运行: php artisan list 对 ...
- Laravel创建自定义 Artisan 控制台命令实例教程
来源:http://laravelacademy.org/post/1374.html 1.入门 Laravel通过Artisan提供了强大的控制台命令来处理非浏览器业务逻辑.要查看Laravel中所 ...
- Yii2之控制台命令篇(console)
控制台命令 Yii 中有一个拥有丰富功能的控制台,它们主要用于创建网站后台处理的任务.在项目根目录下执行相关操作,有意思的事,可以通过 yii 自带的功能,列出当前已有的命令. 1.查看当前项目控制台 ...
- 实用Linux控制台命令
实用Linux控制台命令 screen 例如用Xshell连接 服务器 screen -ls 列出当前用户所有的screen screen 回车直接创建新的screen screen -S scree ...
- RocketMQ控制台命令
本文未完成,有空再补充,不小心发布了,抱歉 Rocket版本:4.3.0 这几天在整RocketMQ,可谓是困难重重,其中关于控制台的命令,网上的都是一半一半的, 所以我打算直接用整一个完整的官方的命 ...
- 浏览器控制台命令调试——console
控制台命令调试时通过浏览器开发工具中的控制台命令嵌入到JavaScript中,输出特定的信息或日志,从而达到调试的目的. 我们常用的Chrome和FireFox,都可以通过F12来打开开发工具. 下面 ...
- 控制台命令行API
js调试系列: 控制台命令行API 上次初步介绍了什么是控制台<js调试系列: 初识控制台>,以及简单的 console.log 输出信息.最后还有两个小问题,我们就当回顾,来看下怎么 ...
- 十分钟通过 NPM 创建一个命令行工具
大过年的,要不要写点代码压压惊?来花十分钟学一下怎么通过 NPM 构建一个命令行工具. 写了一个小 demo,用于代替 touch 的创建文件命令 touchme ,可以创建自带“佛祖保佑”注释的文件 ...
随机推荐
- 数组练习题A财务管理
第一次看全英文的题,还是有点不舒服的感觉,还是用了翻译器 Larry graduated this year and finally has a job. He's making a lot of m ...
- RHEL7恢复root密码
RHEL7恢复root密码 首先关闭SELINUX [root@panda ~]# getenforce Disabled 然后重启,按↑↓键,进入如下界面,选择第一项,按下e键进行编辑 在此界面找到 ...
- (Access denied for user 'root'@'slaver1' (using password: YES))
1.问题描述,启动azkaban的时候报如下所示的错误.之前使用azkaban是root用户,今天使用hadoop用户进行配置和使用,报这个错,说是root连接mysql拒绝了. [hadoop@sl ...
- python全栈开发day76-博客主页
一.昨日内容 1. 注册 1. form组件 - 基于正则的校验规则(手机号和邮箱) - 基于全局钩子判断两次密码是否一致 2. $.each(遍历的对象, function(){ this --&g ...
- ui-router实现返回上一页功能
angular.module('ConsoleUIApp', ['ui.router','ui.bootstrap']) .config(function ($stateProvider, $urlR ...
- openstack2 kvm
一.kvm安装 1.首先虚拟机的话需要打开虚拟化功能,服务器的话需要在bios中设置 2.安装kvm用户态管理工具qemu-kvm 和 用来管理kvm虚拟机的插件libvirt和创建虚拟机用的virt ...
- git之一: git基础
参考: SourceTree使用 git教程 廖学风git 文档1 文档2 1. git 概念介绍 工作区: 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区,工作区下面有. ...
- BZOJ3172 [Tjoi2013]单词 字符串 SA ST表
原文链接http://www.cnblogs.com/zhouzhendong/p/9026543.html 题目传送门 - BZOJ3172 题意 输入$n(n\leq 200)$个字符串,保证长度 ...
- idea配置web项目启动的详细说明
每次用完一个编辑器以后 ,再换另一个编辑器使用 过段时间再回来使用idea,总是会忘记些什么 ,毕竟每个编辑器的风格和结构都有所区别 特此记下笔记 方便以后查看 图片文字看不清的 请在图片上 ...
- 用yield写协程实现生产者消费者
思路: yield可以使得函数阻塞,next,和send可以解阻塞,实现数据不竞争的生产者消费者模式 代码: import random #随机数,模拟生产者的制造物 def eat(): #消费者 ...