Есть ли у PHP символ DEBUG, который можно использовать в коде?

Языки, такие как C и даже C # (который технически не имеет препроцессора), позволяют писать код, например:

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

Это то, что мне нравится использовать в моем коде как форму лесов, и мне интересно, имеет ли PHP что-то вроде этого. Я уверен, что я могу подражать этому с помощью переменных, но я полагаю, что интерпретация PHP в большинстве случаев не позволит легко удалить / удалить отладочный код (поскольку он не нужен) автоматически при его выполнении.

Solutions Collecting From Web of "Есть ли у PHP символ DEBUG, который можно использовать в коде?"

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 позволяет интерпретатору исключать неиспользуемые кодовые пути во время компиляции, но это всего лишь предположение.

– Дуглас Хантер