上古卷轴5指令(上古卷轴5有趣的指令)

前言:

在平时的项目中,有时有些业务需要批量处理,比如为了版本兼容,或者为了不同系统的数据同步等。,我们会选择自定义一些指令的定时或即时执行。

但是,有许多命令需要读取。随着定义的命令越来越多,模型中与业务无关的方法也越来越多。有些命令甚至被删除了,但是对应的模型方法还在。所以为了不影响业务代码,我们会临时设置一个项目作为指令来处理。但还是有一个问题,因为还是刚开始的项目,有了框架,自然不需要里面的那些控制器,路由,配置项。

所以我想参考框架的控制台写一个单独的指令集。看完代码,发现一个我们很少用的交互输出,就是输出有问题。其实在很多带控制台的软件中是很常见的,比如一些脚手架或者软件包管理器在安装前询问。下面简单介绍一些Tp控制台的一般操作流程和交互输出的使用。

流程:

1.思考文件

这是TP命令执行(php think command)的入口文件,实际上是一个php文件。

上古卷轴5指令(上古卷轴5有趣的指令)

2.thinkConsole.php

加载自定义指令和配置,实例化控制台输入和输出,以及转发操作。

上古卷轴5指令(上古卷轴5有趣的指令)

3.Output.php

其他文档将在后面进行总结。这里主要介绍输出内容样式(颜色、背景、字体)和交互输出,因为这两个东西在TP框架文档中很少提到,有点眼花缭乱。

上古卷轴5指令(上古卷轴5有趣的指令)

输出:

1.控制台输出的颜色背景设置

框架的后台设置可以在后面附加- ansi,并通过info、error、warning等方法。Tp的样式设置是封装的,可以在output/driver/console.php的write方法中查看,output/formatter/Style.php的apply方法是通过ANSI控制代码设置控制台颜色。

sprintf(& # 34; 033[% sm % s 033[% sm & # 34;,内爆(& # 39;;',$setCodes),$text,内爆(& # 39;;',$ unset codes));(1)分析

3 [% sm代表设置标签的开始,多个标签使用分号;分色
% s表示要设置的字体
3 [% sm表示设置完成标签。

(2)分裂的例子

回声& # 34;3[31;44;4m如果,整个世界我以为可以忘记,歌词哈~ r n 033[39;49;24m & # 34;从左边的括号开始,第一个分号是字体颜色的起始值,第二个是背景色的起始值,第三个是字体样式,右边的括号是结束值。

上古卷轴5指令(上古卷轴5有趣的指令)

上古卷轴5指令(上古卷轴5有趣的指令)

(3).ANSI控制代码

报价:/033[0m关闭所有属性/033[1m设置高亮度/033[4m下划线/033[5m闪烁/033[7m高亮/033[8m空白/033[30m –/ 033[37m设置前景色/033[40m –/ 033[47m设置] XH设置光标位置/033[2J清除屏幕/033[K清除光标到行尾的内容/033[s保存25l隐藏光标/33[?25h显示光标2。交互式控制台

Output类除了常用的样式输出和写入外,还有ask、/confirm/i等交互输出。下面是实现这个功能的UML。

上古卷轴5指令(上古卷轴5有趣的指令)

(1).问和答

ask方法的第一个参数输入示例、第二个问题、第三个默认值和第四个自定义checker(闭包)接收一个交互输出,可以使问题继续通过错误数。

$output->ask($input, "你现在在哪里", "", function ($selected) use ($output) {if ($selected != "江南") { $output->info("回答错误");} else { $output->info("{$selected}回答正确");}});

上古卷轴5指令(上古卷轴5有趣的指令)$ output-& gt;ask($input,& # 34;你现在在哪里& # 34;, "",function($ selected)use($ output){ if($ selected!= "江南& # 34;){ $ output-& gt;信息(& # 34;回答错误& # 34;);} else { $ output-& gt;信息(& # 34;{$selected}答案正确& # 34;);}});

(2)期权类型

您可以定义多个答案。这个有自己的检查器。代码见outputquestionChoice.php中的getDefaultValidator方法。

第一个参数是输入实例,第二个问题,第三个问题选项和第四个默认项。

$output->choice($input, "请选择王者下面的几个英雄", ["典韦", "赵云", "亚瑟", "王昭君"], "亚瑟");

上古卷轴5指令(上古卷轴5有趣的指令)$ output-& gt;选择($input,& # 34;请选择几个王者以下的英雄& # 34;, ["典韦& # 34;, "赵云& # 34;, "阿瑟& # 34;, "王昭君& # 34;], "阿瑟& # 34;);

(3)确认类型

通过询问是或否模式的交互输出,第一个参数输入示例和第二个问题。

$output->confirm($input, "你确定要走下一步操作吗?");

上古卷轴5指令(上古卷轴5有趣的指令)$ output-& gt;确认($输入,& # 34;您确定要进行下一步吗?");

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。系信息发布平台,仅提供信息存储空间服务。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

本文来自网络,若有侵权,请联系删除,作者:李楠远,如若转载,请注明出处:

发表回复

登录后才能评论