| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> ThinkPHP5.1 交互式命令 -> 正文阅读 |
|
[PHP知识库]ThinkPHP5.1 交互式命令 |
前言:? ? ? ? 在平时项目中,有时需要对某些业务进行批处理,比如为了版本兼容,或者不同系统的数据同步等场景下,我们会选择自定义一些指令定时或即时的执行。 ????????但是有很多命令需要读表,随着定义的指令逐渐变多,模型里本不涉及业务性的方法也越积越多,甚至某些指令删除了,但是对应的模型方法还在。所以为了不影响业务代码,我们会临时起一个项目专门作为指令处理。但还是有一个问题的是,因为还是以框架新启的项目,自然里面的那些控制器,路由,配置项加载其实并不需要。 ? ? ? ? 于是我就想参考框架的 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 控制码实现对控制台颜色的设置。
(1). 分析 \033 [% sm 代表开始设置标签,多个标签用分号;分隔 (2). 拆分示例
????????左边中括号起,分号第一个是字体颜色开始值,第二个背景色开始值,第三个字体样式,右边中括号的结束值。 () (3). ANSI 控制码
2. 交互式控制台 ????????Output 类除了常用的样式性输出和 write 外还有 ask,confirm 等交互式输出,以下是该功能实现的 UML (1). 一问一答 ????????ask 方法第一个参数输入实例,第二个问题,第三个是默认值,第四个自行定义的校验器 (闭包),接收一个交互输出,可以通过错误次数让问题延续。
(2). 选项式 ????????可以定义多个答案,这个有自带的校验器,代码见 output\question\Choice.php 中的 getDefaultValidator 方法。 第一个参输入实例,第二个问题,第三个问题选项,第四个默认项。
(3). 确认式 通过询问 yes or no 方式的交互输出,第一个参输入实例,第二个问题。
|
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 6:14:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |