PHP有一个可以在代码中使用的DEBUG符号吗?

时间:2008-10-10 21:13:43

标签: php debugging

C等语言甚至C#(技术上没有预处理器)允许您编写如下代码:

#DEFINE DEBUG
...

string returnedStr = this.SomeFoo();
#if DEBUG
    Debug.WriteLine("returned string =" + returnedStr);
#endif

这是我喜欢在我的代码中使用的脚手架形式,我想知道PHP是否有这样的东西。我确信我可以使用变量来模拟这个,但我想大多数情况下解释PHP的事实并不容易在执行时自动删除/删除调试代码(因为它不需要)。

3 个答案:

答案 0 :(得分:7)

PHP没有这样的东西。但是你肯定可以快速鞭打一些东西(如果你想的话,也许可以用一个正则表达式解析它以后删除它)。我会这样做:

define('DEBUG', true);
...
if (DEBUG):
  $debug->writeLine("stuff");
endif;

当然,您必须编写自己的调试模块来处理所有这些问题。如果你想在正则表达式解析上让生活更轻松,也许你可以使用三元运算符:

$str = 'string';
DEBUG ? $debug->writeLine("stuff is ".$str) : null;

这将使删除调试行非常简单。

答案 1 :(得分:1)

xdump是我个人最喜欢的调试之一。

http://freshmeat.net/projects/xdump/

define(DEBUG, true);

[...]

if(DEBUG) echo xdump::dump($debugOut);

答案 2 :(得分:0)

它有define个功能,在此处记录:http://us.php.net/manual/en/language.constants.php

考虑到文档中解释的变量和常量之间的差异,我假设PHP的define允许解释器在编译时消除不可用的代码路径,但这只是猜测。

- 道格拉斯亨特