网易首页 > 网易号 > 正文 申请入驻

ThinkPHP5.1 交互式命令

0
分享至

前言

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

但是有很多命令需要读表,随着定义的指令逐渐变多,模型里本不涉及业务性的方法也越积越多,甚至某些指令删除了,但是对应的模型方法还在。所以为了不影响业务代码,我们会临时起一个项目专门作为指令处理。但还是有一个问题的是,因为还是以框架新启的项目,自然里面的那些控制器,路由,配置项加载其实并不需要。

于是我就想参考框架的 console 单独写一个指令集,当看了代码后,发现了一个我们平时很少用到的交互式输出,也就是输出带着问题。其实在很多带有控制台的软件中很常见,比如一些脚手架或包管理器安装前的询问。以下就大概介绍一些 Tp 控制台的大致运行流程和交互式输出的使用。

流程

1. Think 文件

这个就是 TP 命令执行 (php think command) 的入口文件,其实也是一个 PHP 文件。

2. think\Console.php

自定义指令和配置的载入,控制台输入和输出的实例化和运行的转发

3. Output.php

其他的文件后期再总结,这里主要介绍一下输出的内容样式 (颜色,背景,字体) 和交互式输出,因为这两个东西在 TP 框架文档中很少几乎没有提起并且有点炫。

输出:

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

框架中背景设置可以在后面带上 --ansi,并且通过 info, error, warning 等方法。而 Tp 的样式设置是进行了封装,可以在 output/driver/Console.php 的 write 方法查看,output/formatter/Style.php 的 apply 方法就是通过 ANSI 控制码实现对控制台颜色的设置。

sprintf("\033[%sm%s\033[%sm", implode(';', $setCodes), $text, implode(';', $unsetCodes));

(1). 分析

\033 [% sm 代表开始设置标签,多个标签用分号;分隔
% s 表示要设置的字体
\033 [% sm 代表设置完成标签

(2). 拆分示例

echo "\033[31;44;4m如果,全世界我以为可以忘记,歌词哈~\r\n\033[39;49;24m";

左边中括号起,分号第一个是字体颜色开始值,第二个背景色开始值,第三个字体样式,右边中括号的结束值。

(3). ANSI 控制码

2. 交互式控制台

Output 类除了常用的样式性输出和 write 外还有 ask,confirm 等交互式输出,以下是该功能实现的 UML

(1). 一问一答

ask 方法第一个参数输入实例,第二个问题,第三个是默认值,第四个自行定义的校验器 (闭包),接收一个交互输出,可以通过错误次数让问题延续。

(2). 选项式

可以定义多个答案,这个有自带的校验器,代码见 output\question\Choice.php 中的 getDefaultValidator 方法。

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

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

(3). 确认式

通过询问 yes or no 方式的交互输出,第一个参输入实例,第二个问题。

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

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
有猫腻!网传内蒙服务区切糕一刀1万2,内蒙文旅和店家恐怕是冤枉

有猫腻!网传内蒙服务区切糕一刀1万2,内蒙文旅和店家恐怕是冤枉

西莫的艺术宫殿
2024-05-01 04:49:19
现在是4月30日夜晚,突然曝出一个重大消息,要来大动作吗?

现在是4月30日夜晚,突然曝出一个重大消息,要来大动作吗?

股市皆大事
2024-04-30 16:43:26
济南楼市全军覆没,连累青岛楼市,青岛楼市降至15000多元

济南楼市全军覆没,连累青岛楼市,青岛楼市降至15000多元

有事问彭叔
2024-04-30 15:39:00
重磅!英超确认新规!曼联大清洗

重磅!英超确认新规!曼联大清洗

足球大号
2024-04-30 10:56:33
中国女篮名单公布,200斤魔兽落选,冠军中锋不敌两大蓝领内线

中国女篮名单公布,200斤魔兽落选,冠军中锋不敌两大蓝领内线

极度说球
2024-04-30 23:18:58
冠绝中超!北京国安发明1全新外援战术,媒体人:黑风双塔太硬了

冠绝中超!北京国安发明1全新外援战术,媒体人:黑风双塔太硬了

足球大腕
2024-04-30 23:39:22
没啥第三次世界大战、但核战是可能的,也就是不咋打就可能毁灭

没啥第三次世界大战、但核战是可能的,也就是不咋打就可能毁灭

邵旭峰域
2024-04-12 15:30:03
顶流男星们撸铁后,被女粉丝集体劝退:别练了!有肌肉很丑...

顶流男星们撸铁后,被女粉丝集体劝退:别练了!有肌肉很丑...

健身S叔
2024-04-29 20:24:14
绝杀前没叫暂停!穆雷:我们一下子就确定了战术 所有人都就位了

绝杀前没叫暂停!穆雷:我们一下子就确定了战术 所有人都就位了

直播吧
2024-04-30 20:28:36
技不如人?为何我国宇航员出舱站不起来,美国40年前就能直接走路

技不如人?为何我国宇航员出舱站不起来,美国40年前就能直接走路

搞笑的阿票
2024-05-01 00:43:40
大快人心!河北邯郸初中生被害案三名恶魔少爷最高判处无期徒刑

大快人心!河北邯郸初中生被害案三名恶魔少爷最高判处无期徒刑

荷兰豆爱健康
2024-04-30 17:50:03
北京最后一批中产,都搬去东坝了?

北京最后一批中产,都搬去东坝了?

靓仔情感
2024-04-30 18:36:13
上海出轨张老师曝大量美照,难怪16岁男主挡不住,换你也把持不住

上海出轨张老师曝大量美照,难怪16岁男主挡不住,换你也把持不住

辣条小剧场
2024-02-20 08:00:10
河北人肉煎饼案谷宝成被执行死刑,行刑前哭着抽完2根烟

河北人肉煎饼案谷宝成被执行死刑,行刑前哭着抽完2根烟

青丝人生
2024-04-07 19:08:37
撕下自主可控标签!HW宣称已购买ARM V9

撕下自主可控标签!HW宣称已购买ARM V9

于见专栏
2024-04-30 11:29:42
“男友欲望太强是什么体验?”妹子把经历发在网上...我差点笑死在评论区!

“男友欲望太强是什么体验?”妹子把经历发在网上...我差点笑死在评论区!

水泥土的搞笑
2024-04-28 07:30:17
南墙别撞:不肯正视再分配,无非就是生扛大萧条

南墙别撞:不肯正视再分配,无非就是生扛大萧条

鹏飞深文
2024-04-29 00:04:44
被无数人吐槽的6个蠢设计,了解正确用法后:原来蠢的是我自己

被无数人吐槽的6个蠢设计,了解正确用法后:原来蠢的是我自己

美家指南
2024-04-30 20:21:26
四川省住建厅原厅长何健被公诉!

四川省住建厅原厅长何健被公诉!

正义网
2024-04-30 16:30:47
上海男篮大调整!主教练敲定,三人离队,锁定顶级后卫

上海男篮大调整!主教练敲定,三人离队,锁定顶级后卫

保持热爱0263
2024-04-30 20:02:40
2024-05-01 08:16:49
北桥苏
北桥苏
专注后端实战技术分享,致力于给猿友们提供有价值的内容
58文章数 30关注度
往期回顾 全部

科技要闻

余承东卸任华为终端CEO 新任命为董事长

头条要闻

英方称将完全移除敏感场地的中国监控设备 中使馆回应

头条要闻

英方称将完全移除敏感场地的中国监控设备 中使馆回应

体育要闻

穆雷,绝杀了一个时代

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

查道炯:中国经济的外部挑战与应对思考

汽车要闻

越野老炮最爱 哈弗新H9新增2.4T柴油机

态度原创

游戏
旅游
家居
手机
军事航空

钢岚:聊聊改版后的新守护提费斯!官方这次的野心似乎有点大啊!

旅游要闻

五一大雨,浇灭了多少旅游城市的心气?

家居要闻

心之所栖 黑白灰色系打造设计专属感

手机要闻

Pixel 8a 美国定价信息及更多渲染图泄露

军事要闻

以官员:以总理求助拜登阻止逮捕令

无障碍浏览 进入关怀版