希望有高手说说zd之类的怎么进行类似的cms调试工作。

解决方案 »

  1.   

    网上找的,也试过,还可以用,但是总觉得只能调试一个文件,不是很好用。能不能用xdebug之类的调试呢
    ---------------------------------------------Zend Studio调试步骤1、新建一个工程。    “File”--“PHP Project”
           Contents选择“Create project at existing location(from exiting source)”,目录选择你要想包含进文件的所在目录,例如以上就设“D:\Inetpub\wwwroot\bbs”,至于工程名可以不是bbs,像 disduz,Zend不会在D:\Inetpub\wwwroot\bbs下新建一个disduz目录。复制代码
    2、左侧“PHP Explor”窗口,在你希望调试的php上点鼠标右键,弹出菜单中选“Debug As”——“1 PHP Script”,这时Zend就进入调试模式,你可以灵活使用断点,从“Variables”窗口能看到当前变量所有值,系统自有的, 像$_ENV、$_POST,及你自己定义的。    Zend默认在第一条语会停一次,类似第一条语句有一个断点。
        为更好理解调试选项,建议打开帮助(放心,没多少字):
        Zend Studio User Guide > Tasks > Debugging Files and Applications
           Locally Debugging a PHP Script复制代码
    以上就是用Zend Stuio调试*.php基本操作。操作说完了,最后说下个人在调试过程中一点经验,希望对看到的人有点帮助。用户一次操作往往由数个php文件组成。例如Discuz中编辑贴子,它涉及到viewthread.php(显示贴子),按下“编辑”,将执行 post.php。如果想知道post.php中编辑框里字符串是怎么来的,那该怎么办?——这似乎和两个页面相关,但Zend Studio确实一次只能调试一个php。作为一条规则,显示帖子的viewthread.php一旦结束解析,它的那些文件内定义的变量就失效了!这就有个问题,post.php如何知道要编辑的是哪个板块哪个帖子呢?这就要对php执行上下文要有一个大概了解。当一个php被运行时,一开始有效的变量除了超全局变量还有一种是参数中变量。就像以下这条语句:    <A class=editpost
           onclick="floatwin('open_edit', this.href, 600, 410, '600,0');return false;"
           href="http://www.freeors.com/bbs/post.php?action=edit&amp;fid=37&amp;tid=18725&amp;pid=25696">编辑</A>复制代码
    它的作用是鼠标按了“编辑”后弹出post.php页,执行php页的URL是:    http://www.freeors.com/bbs/post.php?action=edit&amp;fid=37&amp;tid=18725&amp;pid=25696复制代码
    这个URL包含了四个参数,对于post.php来说,就是等于给它的四个全局变量赋了值:    $action=edit;
        $fid=37;
        $tid=18725;
        $pid=25696;复制代码
    知道这个后,你想知道post.php中编辑框里字符串是怎么来的,你就改下post.php,在“很开始处”添加以上那四条变量赋值语句,然后用Zend调试post.php。对于要能编辑贴子,实际使用时还要涉及到权限、cookie等等,以上只是简单说下是这么个行为。因为Zend一次调试只能调试一个php,当你遇到一个陌生php工程时,这就使得你需要尽快定位出要调试的是哪个php。个人采用方法:浏览那个网页, 保存成本地文件*.html,看*.html代码,就像上面要确定“编辑”帖子要调的是哪个*.php时, 就找到编辑那地方,通过看html代码知道要调试的是post.php,及需要一开始就生效变量有action、fid、tid和pid。