[TOC]
* * * * *
## 1 控制台源代码
(think/library/think/Console.php)方法列表
~~~
private $name;
private $version;
private $commands = [];
private $wantHelps = false;
private $runningCommand;
private $catchExceptions = true;
private $autoExit = true;
private $definition;
private $helperSet;
private $terminalDimensions;
private $defaultCommand;
~~~
`public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN'){}`
`public function run(){}`
`public function doRun(Input $input, Output $output){}`
`public function setHelperSet(HelperSet $helperSet)`
`public function getHelperSet()`
`public function setDefinition(InputDefinition $definition){}`
`public function getDefinition(){}`
`public function getHelp(){}`
`public function setCatchExceptions($boolean){}`
`public function setAutoExit($boolean){}`
`public function getName(){}`
`public function setName($name){}`
`public function getVersion(){}`
`public function setVersion($version){}`
`public function getLongVersion(){}`
`public function register($name){}`
`public function addCommands(array $commands){}`
`public function get($name){}`
`public function has($name){}`
`public function getNamespaces(){}`
`public function findNamespace($namespace){}`
`public function find($name){}`
`public function all($namespace = null){}`
`public static function getAbbreviations($names){}`
`public function renderException(\Exception $e, Stream $output){}`
`protected function getTerminalWidth(){}`
`protected function getTerminalHeight(){}`
`public function getTerminalDimensions(){}`
`public function setTerminalDimensions($width, $height){}`
`protected function configureIO(Input $input, Output $output){}`
`protected function doRunCommand(Command $command, Input $input, Output $output){}`
`protected function getCommandName(Input $input){}`
`protected function getDefaultInputDefinition(){}`
`protected function getDefaultCommands(){}`
`protected function getDefaultCommands(){}`
`protected function getDefaultHelperSet(){}`
`private function getSttyColumns(){}`
`private function getConsoleMode(){}`
`private function getAbbreviationSuggestions($abbrevs){}`
`public function extractNamespace($name, $limit = null){}`
`private function findAlternatives($name, $collection){}`
`public function setDefaultCommand($commandName){}`
`private function stringWidth($string){}`
`private function splitStringByWidth($string, $width){}`
`private function extractAllNamespaces($name){}`
## 2 文件分析
### 1 成员变量
$name,$version:控制台的名称和版本号
$commands:指令集数组
$wantHelps:???
$runningCommand:当前运行指令
$catchException, autoExit:控制台运行状态控制
$defintion:输入参数定义
$helperSet:助手集
$terminalDimensions:终端尺寸
$defaultCommand:默认运行指令
* * * * *
### 2 public方法(30个)
`__construct()` 初始化控制台
> $name:控制台名称
> $version:控制台版本
* * * * *
`run()` 从输入获取指令并执行
* * * * *
`doRun()` 解析指令并运行
> $input:输入接口
> $output:输出接口
* * * * *
`setHelperSet() getHelperSet()` 设置和获取助手集
> $helperSet:助手集参数
* * * * *
`setDefinition() getDefinition()` 设置和获取输入参数定义
> $definition:输入参数定义
* * * * *
`getHelp()` 获取帮助信息
* * * * *
`setCatchExceptions()` 是否捕获异常
> $boolean: 设置控制台参数$catchExceptions
* * * * *
`setAutoExit()` 是否自动退出
> $boolean: 设置控制台参数$autoExit
* * * * *
`getName() setName() `获取和设置控制台名称
> $name:控制台名称参数$name
* * * * *
`getVersion() setVersion()` 获取和设置控制台版本
> $version:控制台版本参数$version
* * * * *
`getLongVersion()` 获取完整版本的号
添加和获取指令
* * * * *
`register() addCommands() add() get()
has() find() all()
getAbbreviations()`
> $name 指令名称
* * * * *
`getNamespaces() findNamespace()` 获取命名空间信息
* * * * *
`getTerminalDimensions()
setTerminalDimensions()` 获取和设置终端尺寸信息
* * * * *
`renderException()` 输出异常信息
* * * * *
`extractNamespace()` 返回指令命名空间部分
* * * * *
`setDefaultCommand()` 设置默认的指令
* * * * *
### 3 protected方法(9个)
`getTerminalWidth() getTerminalHeight() ` 获取终端宽度和高度
* * * * *
`configureIO()` 配置输入和输出对象
* * * * *
`doRunCommand()` 运行指令
* * * * *
`getCommandName()` 获取指令的基础名称
* * * * *
`getDefaultInputDefinition()` 获取默认输入定义
* * * * *
`getDefaultCommands()` 设置默认命令
* * * * *
`getDefaultHelperSet()` 设置默认助手
* * * * *
`getSttyColumns()` 获取stty列数
### 4 Private 私有方法(6个)
`getConsoleMode()` 获取终端模式
`getAbbreviationSuggestions()` 获取可能的建议
`findAlternatives()` 查找可替代的建议
`stringWidth()` 字符串长度
`splitStringByWidth()` 字符串切割
`extractAllNamespaces()` 返回所有命名空间
## 3 控制台的使用
### 3-1 添加命令配置
添加需要执行的命令类名
~~~
application\command.php
return ['think\console\command\Test'];
~~~
### 3-2 命令执行实现
命令类的实现
继承think\console\command类
实现 configure() execute()方法
~~~
thinkphp\library\think\console\command\Test.php
<?php
namespace think\console\command;
use think\console\Input;
use think\console\Output;
class Test extends Command
{
protected function configure()
{
$this->setName('test')
->setDescription('Command Test');
}
protected function execute(Input $input, Output $output)
{
$output->writeln("TestCommand:");
}
}
~~~
### 3-3 控制台入口测试
1 打开命令,进入框架根目录(console文件所在目录)
![](https://box.kancloud.cn/2016-03-28_56f8de1ba5a04.jpg)
2 输入测试命令 php console test
![](https://box.kancloud.cn/2016-03-28_56f8de1bba43b.jpg)
3 输出结果
![](https://box.kancloud.cn/2016-03-28_56f8de1bcfe67.jpg)
4 在命令实现文件的execute()中添加相应功能即可
## 4 总结
控制台是tp5新的功能。
其接口是 Console.php文件,
9个成员变量
30个public方法
9个protected方法
6个private方法
实现在[D:(\concole\)控制台](http://www.kancloud.cn/zmwtp/tp5/120858)目录
- 更新记录
- 概述
- 文件索引
- 函数索引
- 章节格式
- 框架流程
- 前:章节说明
- 主:(index.php)入口
- 主:(start.php)框架引导
- 主:(App.php)应用启动
- 主:(App.php)应用调度
- C:(Controller.php)应用控制器
- M:(Model.php)数据模型
- V:(View.php)视图对象
- 附:(App.php)应用启动
- 附:(base.php)全局变量
- 附:(common.php)模式配置
- 附:(convention.php)全局配置
- 附:(Loader.php)自动加载器
- 附:(Build.php)自动生成
- 附:(Hook.php)监听回调
- 附:(Route.php)全局路由
- 附:(Response.php)数据输出
- 附:(Log.php)日志记录
- 附:(Exception.php)异常处理
- 框架工具
- 另:(helper.php)辅助函数
- 另:(Cache.php)数据缓存
- 另:(Cookie.php)cookie操作
- 另:(Console.php)控制台
- 另:(Debug.php)开发调试
- 另:(Error.php)错误处理
- 另:(Url.php)Url操作文件
- 另:(Loader.php)加载器实例化
- 另:(Input.php)数据输入
- 另:(Lang.php)语言包管理
- 另:(ORM.php)ORM基类
- 另:(Process.php)进程管理
- 另:(Session.php)session操作
- 另:(Template.php)模板解析
- 框架驱动
- D:(\config)配置解析
- D:(\controller)控制器扩展
- D:(\model)模型扩展
- D:(\db)数据库驱动
- D:(\view)模板解析
- D:(\template)模板标签库
- D:(\session)session驱动
- D:(\cache)缓存驱动
- D:(\console)控制台
- D:(\process)进程扩展
- T:(\traits)Trait目录
- D:(\exception)异常实现
- D:(\log)日志驱动
- 使用范例
- 服务器与框架的安装
- 控制器操作
- 数据模型操作
- 视图渲染控制
- MVC开发初探
- 模块开发
- 入口文件定义全局变量
- 运行模式开发
- 框架配置
- 自动生成应用
- 事件与插件注册
- 路由规则注册
- 输出控制
- 多种应用组织
- 综合应用
- tp框架整合后台auto架构快速开发
- 基础原理
- php默认全局变量
- php的魔术方法
- php命名空间
- php的自动加载
- php的composer
- php的反射
- php的trait机制
- php设计模式
- php的系统时区
- php的异常错误
- php的输出控制
- php的正则表达式
- php的闭包函数
- php的会话控制
- php的接口
- php的PDO
- php的字符串操作
- php的curl
- 框架心得
- 心:整体结构
- 心:配置详解
- 心:加载器详解
- 心:输入输出详解
- 心:url路由详解
- 心:模板详解
- 心:模型详解
- 心:日志详解
- 心:缓存详解
- 心:控制台详解
- 框架更新
- 4.20(验证类,助手函数)
- 4.27(新模型Model功能)
- 5.4(新数据库驱动)
- 7.28(自动加载)