控制台运行php,另:(Console.php)控制台

[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

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)目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值