使用zfdebug调试zend framework

一、zfdbug简介:
  zend framework项目开发过程中,测试是无处不在的,但zend framework测试非常麻烦。因此就有老外写了一个zf的debug插件功能非常全面(文件,内存,数据缓存变量,运行时间,异常),它能展示我们平时看不到的系统信息对我们快速定位问题,提高系统的性能,安全性等都有很大的帮助。
有了zfdebug,以后使用zend framework开发项目,调试再无烦恼。


二、zfdebug的官方地址
http://code.google.com/p/zfdebug/
下载地址:
http://code.google.com/p/zfdebug/downloads/list


三、 zfdebug安装方法
下载之后的文件不能直接运行的,只能把重要的几个文件复制到自己的zf项目中,并且做些配置。
以zf1.10.0为例子。
把zfdebug/library/ZFDebug 复制到 你自己zf项目的库文件夹下面,例如:zfproject/library/ZFDebug
然后打开文件zfdebug/demos/Zend_Application_Bootstrap.php 复制里面的protected function _initZFDebug()全部代码到你项目的
Bootstrap.php里面。
这样就能看到zfdebug效果了。
(zfdebug的图片不需要复制,因为zfdebug里面已经把zfdebug的图片写成数据流的方式来显示了)

四、灵活的使用zfdebug
但在实际的使用过程中还要注意下面几点,
1.默认的情况下zfdebug只显示三项的调试信息,如果要想显示更多的调试信息类型,就要修改
你项目的Bootstrap.php的_initZFDebug的内容。
例如:
            $autoloader = Zend_Loader_Autoloader::getInstance();
            $autoloader->registerNamespace('ZFDebug');
             $db = Zend_Registry::get ( 'db');
            $options = array(
                'plugins' => array('Variables',
                                    'Database' => array('adapter' => $db),
                                    'Html',
                                   'File' => array('base_path' => MYWEB_ROOT_DIR),
                                   'Memory',
                                   'Time',
                                   'Registry',
                                   'Exception'),
            );
2.调试信息在项目开发过程中要用到,实际使用时就关闭的,所以应该在配置文件application.ini里面加上zfdebug开关的配置。
例如   zfdebug.open = 1
那么在_initZFDebug()中就可以根据这个值来是否执行zfdebug了。

3.默认情况下,zfdebug使用的js文件是http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js,也就是说如果在不能访问外网的情况下,zfdebug的结果栏是可以显示出来,但点击之后会有js错误。
解决的办法是修改_initZFDebug()的jquery_path变量。
            $options = array(
                'plugins' => array('Variables',
                                    'Database' => array('adapter' => $db),
                                    'Html',
                                   'File' => array('base_path' => MYWEB_ROOT_DIR),
                                   'Memory',
                                   'Time',
                                   'Registry',
                                   'Exception'),
                'jquery_path'=>"http://lcoalhost/zfproject/templates/default/js/jquery.min.js"

            );

4)也是js的问题。一般的情况下zfdebug很好的运作,但实际使用中,很有可能zfdebug的jquery.min.js和你项目的js有冲突。确实是个头痛的问题。
  我解决的办法是修改zfdebug的核心文件,使zfdebug的结果在iframe的另外一个窗口显示,这样就避免了js冲突的问题。

要深入研究zfdebug,主要看library/ZFDebug/Controller/Plugin/Debug.php 和library/ZFDebug/Controller/Plugin/Debug/Plugin下面的php文件。那么你就知道zfdebug的原理和修改了。也会惊叹作者对zf内核的熟悉。
发布了28 篇原创文章 · 获赞 1 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章