企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] * * * * * ## 1 控制台 ### 1 控制台概览 ![](https://box.kancloud.cn/2016-03-28_56f8d7892bab5.jpg) ### 2 控制台入口(tp5\console) #### 2-1 创建控制台对象 ~~~ $console = new \think\Console('Think Console', '0.1'); ~~~ #### 2-2 注册自定义指令 ~~~ $console->add(new $command()); ~~~ #### 2-3 启动控制台 ~~~ $console->run(); ~~~ 注册的指令,需要继承think\console\command\Command.php父类 ### 3 控制台流程(\think\Console->run()) #### 3-1 配置输入输出(run()) ~~~ $this->configureIO() ~~~ #### 3-2 输入参数检查 (\think\Console->doRun()) > 1 版本号 ~~~ $input->hasParameterOption(['--version', '-V']) ~~~ > 2 帮助命令 ~~~ $input->hasParameterOption(['--help', '-h']) ~~~ > 3 默认命令 ~~~ $input = new Input([$this->defaultCommand]); ~~~ #### 3-3 运行命令 (\think\Console->doRun()) > 查找命令 ~~~ $command = $this->find($name); ~~~ > 运行命令 ~~~ $exitCode = $this->doRunCommand($command, $input, $output); ~~~ #### 3-4 返回结果(run()) > (\think\Console->doRun()) ~~~ return $exitCode; ~~~ > (\think\Console->run()) ~~~ if ($this->autoExit) { if ($exitCode > 255) { $exitCode = 255; } exit($exitCode); } return $exitCode; ~~~ ## 2 控制台输入Input.php ### 2-1 控制台输入意义 获取输入内容:参数,选项(使用-或者--开头),指令(选项与参数组合) ### 2-2 控制台输入文件 ~~~ 输入选项:\input\Optinon.php 输入参数:\input\Argument.php 输入指令:\input\Definition.php 输入接口:Input.php ~~~ ## 3 控制台命令 Command.php ### 3-1 控制台命令意义 指令对应的命令执行实现 ### 3-2 当前命令文件 ~~~ 命令接口 \command\Command.php 构建命令 \command\Build.php 帮助命令 \command\Help.php 列表命令 \command\List.php 控制器构造命令\command\make\Controller.php 模型构造命令\command\make\Model.php ~~~ ## 4 控制台输出 Output.php ### 4-1 控制台输出意义 控制台输出样式设置,并输出执行结果 ### 4-2 控制台输出文件 ~~~ 输出内容 \output\Stream.php 输出格式 \output\Formatter.php 输出样式 \output\formatter\Stack.php \output\formatter\Style.php 输出接口 Out.php ~~~ ## 5 控制台配置 Console.php ### 5-1 名称,版本 ~~~ public function getName() 获取控制台名称 public function setName($name) 设置控制台名称 public function getVersion() 获取控制台版本号 public function setVersion($version) 设置控制台版本号 public function getLongVersion() 获取控制台完整版本信息 ~~~ ### 5-2 输入输出接口 ~~~ protected function configureIO(Input $input, Output $output) 配置控制台输入输出 ~~~ ### 5-3 助手集 ~~~ public function setHelperSet(HelperSet $helperSet) 设置助手集 public function getHelperSet() 获取助手集 public function getHelp() 获取帮助内容 protected function getDefaultHelperSet() 设置默认助手集 ~~~ ### 5-4 指令 ~~~ public function setDefinition(InputDefinition $definition) 设置指令 public function getDefinition() 获取指令 protected function getDefaultInputDefinition() 获取默认指令 ~~~ ### 5-5 命令 ~~~ public function register($name) 注册执行命令 public function add(Command $command) 注册执行命令 public function addCommands(array $commands) 注册执行命令 public function get($name) 获取执行命令 public function has($name) 检查执行命令 public function find($name) 查询执行命令 public function all($namespace = null) 返回所有命令 public function getNamespaces() 获取命令命名空间 public function findNamespace($namespace) 查找命名空间 public function extractNamespace($name, $limit = null) 输出命名空间 private function extractAllNamespaces($name) 输出所有命名空间 public static function getAbbreviations($names) private function getAbbreviationSuggestions($abbrevs) private function findAlternatives($name, $collection) public function setDefaultCommand($commandName) 设置默认命令 protected function getCommandName(Input $input) 获取命令名称 protected function getDefaultCommands() 获取默认命令 ~~~ ### 5-6 控制台运行状态 ~~~ public function setCatchExceptions($boolean) 设置异常运行 public function setAutoExit($boolean) 设置自动运行 public function renderException(\Exception $e, Stream $output) 输出异常内容 ~~~ ### 5-7 控制器显示状态 ~~~ public function getTerminalDimensions() 获取控制台显示信息 public function setTerminalDimensions($width, $height) 设置控制台显示信息 protected function getTerminalWidth() 获取控制台宽度 protected function getTerminalHeight() 获取控制台高度 private function getSttyColumns() 获取行数 private function getConsoleMode() 获取控制台模式 ~~~ ### 5-8 字符串操作函数 ~~~ private function stringWidth($string) 字符串长度获取 private function splitStringByWidth($string, $width) 字符串长度分割 ~~~ ## 6 控制台助手