Есть ли в PHP символ DEBUG, который можно использовать в коде? - PullRequest
4 голосов
/ 11 октября 2008

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

#DEFINE DEBUG
...

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

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

Ответы [ 3 ]

7 голосов
/ 11 октября 2008

PHP не имеет ничего подобного. но вы могли бы определенно быстро что-то набрать (и, возможно, проанализировать регулярное выражение, чтобы убрать это позже, если хотите). я бы сделал это так:

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

конечно, вам придется написать свой собственный модуль отладки, чтобы справиться со всем этим. если вы хотите упростить жизнь при разборе регулярных выражений, возможно, вы могли бы вместо этого использовать троичный оператор:

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

, что сделало бы удаление строк отладки довольно тривиальным.

1 голос
/ 11 октября 2008

xdump - один из моих любимых вариантов отладки.

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

define(DEBUG, true);

[...]

if(DEBUG) echo xdump::dump($debugOut);
0 голосов
/ 11 октября 2008

Имеется define функция, задокументированная здесь: http://us.php.net/manual/en/language.constants.php.

Учитывая множество различий между переменными и константами, объясненных в документации, я предполагаю, что PHP define позволяет интерпретатору исключать неиспользуемые пути кода во время компиляции, но это только предположение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...