作为一个闲不住且希望一直能挑战自己的人,我总是在琢磨能做点什么。自从今年初开始接触PHP,我也总想能在这个领域内产生点贡献。那能做点什么呢?我经常看到很多phper说自己设计了一个什么框架,或者说自己搭建了一个什么系统。虽然这些对自己来说算是一种历练,但是这些对更多的人来说可能并没太多帮助。而我希望我能做的是可以帮助到更多人的东西。于是就有了标题中这个项目的立项。(转载请指明出于breaksoftware的csdn博客)
这个项目的相关想法我酝酿了一两个月。利用零零散散的时间我不停的调研相关技术可能性,思考产品的形态和功能。于是在今年七月份,我给组内发了一份《PHP调试器设计心路历程和初步想法》的邮件。现在翻看了一下这封邮件,写的还算正式。我就将该邮件的内容作为该博文的主要内容给贴出来,最后我会对该封邮件进行补充:
Hi all:
由于我们组需要产出一些公共使用的组件,所以上次会上我提出一个制作PHP调试器的想法。
这个想法的初衷是为了解决PHP调试的一些痛点。我观察并询问了一些长期从事PHP开发的同学,发现他(她)们几乎都是使用var_dump/print之类的打印方法去进行调试。这个方法虽然很管用,但是其也有很多弊端:
基于以上的问题,我最初的想法是想设计出一种PHP扩展,它将所有过程中的变量(全局变量,成员变量,临时变量等)都保存起来。这是一种轻量级的设计,可以让我们在执行一次PHP文件后,记录所有变量,然后回溯各个变量的值。但是这个方案我觉得存在以下问题:
于是上周五我将这个方案给否了,又进行一次方案的调研和设计。好在天无绝人之路,我找到一个我们可以做、且很有前景的一个方案:Xdebug+DebugWebServer。
Xdeug是PHP的一个调试扩展,我看了一下它的源码,写的挺好,是一个值得信任的插件。它提供了基本的调试功能,而这些调试功能也正好能解决我们之前的痛点。而且:
但是目前已经有很多关于Xdebug调试的方案,比如netbeans+xdebug、notepad++ + xdebug、vim+xdebug。好在大家都没有将事情给做绝了,还给我留下一条路——就是DebugWebServer+Xdebug。我们先来分析下这个方案和其他方案的不同:
而DebugWebServer则不存在以上问题,因为
最后讲下DebugWebServer的设计:
一个重要的功能就是PHP文件分析和着色。然后修改相关着色部分的点击事件,让其在右侧区域展现出来。我对这块不是特别了解,但是可以在网上找到相关资料http://www.oschina.net/project/tag/172/wysiwyg?lang=22&os=0&sort=view。其中有一款应该使我们需要使用和定制的。
大家对上面的想法有什么意见和建议请和我反馈,如果有特别想去攻关的技术或者特别想实现的功能,我们可以商量怎么一起去做。
谢谢。
这封邮件基本展现了这个项目立项时的背景。而在之后调研和实现的过程中,我也是按着这封邮件的思路去实施,其中若干的复杂点也是一点一点被攻克。其实这封邮件隐藏了我当时的一个疑虑——界面的实现,因为我并不擅长做网页,更不擅长做界面设计。但是最后我还是逼着自己把这块给攻克了下来,当然这些都是后话。在详细介绍这个工具诞生过程和使用方法前,我先把其目前相对稳定的版本展现给大家看。希望能吸引大家的注意,如果有兴趣,可以一起把这个项目完善。