tp5.2 console 命令建议 望采纳

浏览:1005 发布日期:2018/11/12
经过thinkphp 5 与5.1 的长时间接触后,觉得命令是个很重要的东西,至少对我来说是这样,很多东西都离不开,在命令上做了很多的事情 让项目看起来更加紧凑

然而,在写过成吨的console 之后,却发现,实现起来其实还是很麻烦的一件事情,至少现在的命令控制来说 确实不是很理想。

希望以下的建议,能够对官方5.2开发控制台的时候起到一定作用的帮助

首先 使用过程中发现 命令在制作的时候 非常啰嗦这件事,也许官方会说就是几个函数这个设置那个设置的 就搞定了。
然而我想说的是 整个过程并不清晰也不明确,首先需要说的分组设置,如果我自定义一个分组设置,那么我们后面必须跟着明确的内容

比如
web
web:cache
web:key
web:setconfig 等等

我认为 在制作过程中这一步至少在显示上用缩进代替web 前缀
web
cache
key
setconfig

在这里还有要说的是 web 命令组 这个组命令首先应该实现的 控制台显示
即:
web wbe 命令 用于控制web服务器配置的执行内容
cache
key
setconfig
【提议 1 】
为分组应该具有明确的分组功能说明介绍能力。
为每个命令 包括 分组, 分配专属的help 指令,说明指令必须强制执行
例如 web help 显示web 内容
例如 web key help 显示 key命令内容

【提议 2 】
为分组web 内容设置具体的参数实现,即在写cache 等二级指令时,必须优先实现组内容的 参数指令设置,从而淘汰现有的$input->setName()设置模式,这样做的好处就是更加灵活多变,不在需要为了一个指令专门写一个类,而是可以大面积的做操作

【提议 3】
为分组设置的每个指令,进行单独的描述设置,可以采用重写或者采用成员属性介绍,类似验证器那样 ,个人认为描述分为3种,1.一种是对改指令描述 2一种是对改指令的用法帮助 3一种是对改指令的 子选项描述。

以上这些包括设置指令,子指令,帮助 显示 描述等信息,即用设置方法来实现,从而更加轻松


【提议 4】
为每个指令实现的实现,建立专门的类方法来进行
例如 我需要配置某个key
web key passkey -set
然而需要用到的指令和子指令应该构建专门
setKeyPasskey()
实现指令配置项
子函数
setKeyPasskeySet()
实现子参数内容配置项

【提议5 断开现有的对象注入写法】
虽然有些地方看起来很方便,但是感觉在控制台反而成为了类似的制约,不如直接用成员属性$this->input 或者self::input 来解决所有地方必须从头到尾的传递这些参数,而为了最终处理却有不得不在不用的地方也贯穿始终的把它们携带上。虽然后来项目改进了其他方案 解决了这些问题,但是我却用了不少的时间和大量的代码来维护这一块,相当麻烦

【提议 6】
在控制台上述所说的问题以外 最重要的是 在用户自定义层,
应该每个组具有其特定的设置方案与规则,
应该该组下所有的类同事具有这些设置的属性值与参数等
应该每个类具有不连续性质 每个对外的指令 应该具有不服控制器的 访问特性那样,不再是 设置与执行独立
而是 设置 参数流程 子参数流程 通过命名约束 剧透较强的耦合性和独立性
而不是 全文连贯的方案
评论(
后面还有条评论,点击查看>>