【www.gdgbn.com--.Net开发】

一、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


seo教程ver="showmenu({"ctrlid":this.id,"pos":"13"})" style="display: none; position: absolute"> zfdebug.gif

下载 (7.57 kb)
2010-8-17 17:34



三、 zfdebug安装方法
下载之后的文件不能直接运行的,只能把重要的几个文件复制到自己的zf项目中,并且做些配置。
以zf1.10.0为例子。
把zfdebuglibraryzfdebug 复制到 你自己zf项目的库文件夹下面,例如:zfproject/library/zfdebug
然后打开文件zfdebugdemoszend_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,主要看libraryzfdebugcontrollerplugindebug.php 和libraryzfdebugcontrollerplugindebugplugin下面的php文件。那么你就知道zfdebug的原理和修改了。也会惊叹作者对zf内核的熟悉。

本文来源:http://www.gdgbn.com/asp/28100/