创建控制台命令程序
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. Tensorflow生成唐诗和歌词(下)

    整个工程使用的是Windows版pyCharm和tensorflow. 源码地址:https://github.com/Irvinglove/tensorflow_poems/tree/master ...

  2. 20165323 2017-2018-2 《Java程序设计》课程总结

    一.每周作业链接汇总 预备作业1:20165323 我期望的师生关系 预备作业2:20165323 学习基础与C语言学习心得 预备作业3:20165323 预备作业三 第一周作业:20165323&l ...

  3. 读C#开发实战1200例子记录-2017年8月14日10:03:55

    C# 语言基础应用,注释 "///"标记不仅仅可以为代码段添加说明,它还有一项更重要的工作,就是用于生成自动文档.自动文档一般用于描述项目,是项目更加清晰直观.在VisualStu ...

  4. .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  5. 一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务

    1:Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务 A.zookeeper是为别的分布式程序服务的 B.Zookeeper本身就是一个分布式程序(只要有半数以上节点存活 ...

  6. 【回顾】html简介、基础、元素

    1.简介 什么是HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言 标 ...

  7. python sqlite3查看数据库所有表(table)

    #coding:utf-8 import sqlite3 ''' sqlite3存在系统表sqlite_master,结构如下: sqlite_master( type TEXT,      #类型: ...

  8. Python_datetime模块

    datetime模块重新封装了time模块,提供更多的接口,提供的类有: date,表示日期的类 time,表示时间的类 datetime,表示日期和时间的类 timedelta,表示时间间隔,即两个 ...

  9. Python学习(二十六)—— Django基础一

    转载自:http://www.cnblogs.com/liwenzhou/p/8258992.html 一.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的 ...

  10. laravel 错误 1071 Specified key was too long; max key length is 1000 bytes

    laravel 执行 php artisan migrate 安装数据库报 1071 Specified key was too long; max key length is 1000 bytes ...