C等语言甚至C#(技术上没有预处理器)允许您编写如下代码:
#DEFINE DEBUG
...
string returnedStr = this.SomeFoo();
#if DEBUG
Debug.WriteLine("returned string =" + returnedStr);
#endif
这是我喜欢在我的代码中使用的脚手架形式,我想知道PHP是否有这样的东西。我确信我可以使用变量来模拟这个,但我想大多数情况下解释PHP的事实并不容易在执行时自动删除/删除调试代码(因为它不需要)。
答案 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
允许解释器在编译时消除不可用的代码路径,但这只是猜测。
- 道格拉斯亨特