基于TP5框架的twothink的插件升级修改小结

浏览:4621 发布日期:2017/02/07 分类:技术分享 关键字: TP5 TP3 thinkPHP CMS 插件 atom onethink


升级时主要是附件插件出错,排查时发现数据取不到,后来数据取到了,显示又不正常,但总的来说,数据取不到,是最隐蔽的,主要原因是由PHP的动态特性引起的:
一是extract方法可以动态批量生成变量,这也太雷人了。
二是方法体中的if和for这类结构中的变量是作用于整个方法体的,会影响变量赋值
三是可以随时给对象或数组添加属性或元素。
上面这些特性给错误排查带来了困难,对于Java程序员来说一时难以习惯。

好在有两个办法:
一是利用trace,dump和var_dump来观察执行过程,包括变量值及方法体的调用过程。习惯于看TP框架提供的执行日志,以及页面出错信息提示。能否看懂这些信息很重要。主要是出错是由谁直接引起的,然后定位到那行代码。TP框架提供的出错信息是堆栈式的,这和Java并无区别。
如何培养看调试信息的感情?如下:
1、tp5的日志信息:页面请求地址,SQL执行语句;
2、页面出错信息:错误堆栈,找到真正出错的那个页。
3、var_dump 或者dump 可将变量值打印到屏幕

二是回到最原始的功能需求去阅读代码。例如这次附件插件排错,知道原框架的文档模型功能,就知道需要自己取得model对象传入模板文件中即可。有些错误单纯排查语法逻辑是无法解决的,必须回到需求去理解代码,甚至重构代码功能。
在修改代码时,我用atom同时打开twothink和onethink这两个项目代码对比着看,非常方便。

建议除了onethink自带的7个插件外,twothink的新增加的那5个插件谨慎使用,毕竟没仔细去测试过。从春节前到现在整整十天,断断续续地改,精力不够,还想做其他创业项目,几近想放弃修改。
对于目前这个CMS的插件的设想,假若以后新版本的onethink推出,很有可能其插件元数据信息格式改为json方式,代码会更简洁。目前onethink里插件还是蛮丰富的,很难得。
希望插件和模板这两块能越来越丰富。

相对于TP3.2.3来说,TP5的改变太大了,以至于提供一个自动化的升级工具显得很困难了,新老框架的风格差异主要集中在单字母方法的使用,以及模型对象、上传下载功能的处理这三大类别上。一种需求有多种方法实现,使得代码风格很杂乱,社区代码交流就不方便了,例如数据库数据的操作,既有Db类,又有Model类,官方应给出一个最佳建议,以平定天下混乱。
目前来讲,twothink是学习TP5这个框架的最好案例,非常感谢这个小组!
twothink的git下载见:http://www.topthink.com/product/25039.html
本人暂时提供百度网盘下载:http://pan.baidu.com/s/1slCSSQp
特别感谢twothink群的苹果、群狼的鼓励。
交流QQ 82889082
最佳答案
评论( 相关
后面还有条评论,点击查看>>