ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[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)目录