5 Stimmen

Gibt es in PHP ein DEBUG-Symbol, das im Code verwendet werden kann?

Sprachen wie C und sogar C# (das technisch gesehen keinen Präprozessor hat) ermöglichen es Ihnen, Code wie diesen zu schreiben:

#DEFINE DEBUG
...

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

Das ist etwas, das ich gerne in meinem Code als eine Art Gerüst verwende, und ich frage mich, ob PHP etwas Ähnliches hat. Ich bin sicher, dass ich dies mit Variablen emulieren kann, aber ich kann mir vorstellen, dass die Tatsache, dass PHP in den meisten Fällen interpretiert wird, es nicht einfach macht, den Debugging-Code (da er nicht benötigt wird) automatisch zu entfernen, wenn er ausgeführt wird.

9voto

Owen Punkte 79611

PHP hat nicht so etwas. aber Sie könnten auf jeden Fall etwas schnell peitschen (und vielleicht eine Regex-Parse, um es später zu entfernen, wenn Sie wollten). ich würde es als solche tun:

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

Natürlich müssten Sie Ihr eigenes Debug-Modul schreiben, um all das zu handhaben. Wenn Sie sich das Leben beim Regex-Parsing leichter machen wollten, könnten Sie stattdessen vielleicht einen ternären Operator verwenden:

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

was das Entfernen von Debug-Zeilen ziemlich trivial machen würde.

1voto

Jayrox Punkte 4315

Xdump ist einer meiner persönlichen Favoriten zum Debuggen.

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

define(DEBUG, true);

[...]

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

0voto

douglashunter Punkte 9

Sie hat eine define funciton, hier dokumentiert: http://us.php.net/manual/en/language.constants.php .

Angesichts der in der Dokumentation erläuterten Unterschiede zwischen Variablen und Konstanten gehe ich davon aus, dass PHPs define ermöglicht es dem Interpreter, unbrauchbare Codepfade zur Kompilierzeit zu eliminieren, aber das ist nur eine Vermutung.

-- Douglas Hunter

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X