fuentesjr
fuentesjr

Reputation: 52318

Does PHP have a DEBUG symbol that can be used in code?

Languages like C and even C# (which technically doesn't have a preprocessor) allow you to write code like:

#DEFINE DEBUG
...

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

This is something I like to use in my code as a form of scaffolding, and I'm wondering if PHP has something like this. I'm sure I can emulate this with variables, but I imagine the fact that PHP is interpreted in most cases will not make it easy to strip/remove the debugging code (since its not needed) automatically when executing it.

Upvotes: 6

Views: 6454

Answers (3)

Jayrox
Jayrox

Reputation: 4375

xdump is one of my personal favorites for debugging.

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

define(DEBUG, true);

[...]

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

Upvotes: 2

douglashunter
douglashunter

Reputation: 9

It has a define funciton, documented here: http://us.php.net/manual/en/language.constants.php.

Given the set of differences between variables and constants explained in the documentation, I assume that PHP's define allows the interpreter to eliminate unusable code paths at compile time, but that's just a guess.

-- Douglas Hunter

Upvotes: 0

Owen
Owen

Reputation: 84493

PHP doesn't have anything like this. but you could definitely whip up something quickly (and perhaps a regex parse to strip it out later if you wanted). i'd do it as such:

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

of course you'd have to write your own debug module to handle all that. if you wanted to make life easier on regex parsing, perhaps you could use a ternary operator instead:

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

which would make removing debug lines pretty trivial.

Upvotes: 11

Related Questions