Языки, такие как C и даже C # (который технически не имеет препроцессора), позволяют писать код, например:
#DEFINE DEBUG ... string returnedStr = this.SomeFoo(); #if DEBUG Debug.WriteLine("returned string =" + returnedStr); #endif
Это то, что мне нравится использовать в моем коде как форму лесов, и мне интересно, имеет ли PHP что-то вроде этого. Я уверен, что я могу подражать этому с помощью переменных, но я полагаю, что интерпретация PHP в большинстве случаев не позволит легко удалить / удалить отладочный код (поскольку он не нужен) автоматически при его выполнении.
PHP не имеет ничего подобного. но вы могли бы определенно быстро взломать что-то (и, возможно, синтаксический анализ, чтобы раздеть его позже, если хотите). я бы сделал это как таковой:
define('DEBUG', true); ... if (DEBUG): $debug->writeLine("stuff"); endif;
конечно, вам придется написать свой собственный модуль отладки, чтобы справиться с этим. если вы хотите облегчить жизнь при синтаксическом анализе регулярных выражений, возможно, вместо этого вы можете использовать троичный оператор:
$str = 'string'; DEBUG ? $debug->writeLine("stuff is ".$str) : null;
что сделает удаление строк отладки довольно тривиальным.
xdump является одним из моих личных фаворитов для отладки.
http://freshmeat.net/projects/xdump/
define(DEBUG, true); [...] if(DEBUG) echo xdump::dump($debugOut);
Он имеет функцию define
описанную здесь: http://us.php.net/manual/en/language.constants.php .
Учитывая набор различий между переменными и константами, описанными в документации, я предполагаю, что define
PHP позволяет интерпретатору исключать неиспользуемые кодовые пути во время компиляции, но это всего лишь предположение.
– Дуглас Хантер