Debugging in SilverStripe

Die Suche nach den Fehlern in meinen Programmierergebnissen ist ein wesentlicher Teil meiner Entwicklungsarbeit. Was steht jetzt eigentlich in dieser Variablen? Kommt das Script überhaupt an eine bestimmte Stelle im Code? Die hauseigenen Mittel von PHP, wie etwa var_dump(), helfen in manchen Situationen nur nicht weiter. Bei der Arbeit am JavaScript-lastigen Backend von SilverStripe führt var_dump() unter Umständen dazu, dass überhaupt nichts mehr ausgegeben wird.

SilverStripe denkt mit!

Mir passiert es recht oft, dass ich die Existenz einer Variable nicht abfrage, bevor ich mit ihr arbeite. Die entsprechende Fehlermeldung schreibt SilverStripe in eine Datei namens "logfile". Vorraussetzung ist eine entsprechende Einstellung in der _config.php und die notwendigen Zugriffsrechte auf die Datei:

Debug::log_errors_to("/logfile");

Wie mache ichs mir selbst?

SilverStripe schreibt Variableninhalte in eine Datei namens debug.log, man muss es dem System nur sagen. Außerdem muss die Datei natürlich die entsprechenden Zugriffsrechte haben.
Nehmen wir einmal an, wir wollen wissen, ob das Laden von Objekten überhaupt funktioniert hat:

$var = DataObject::get('Object1');
Debug::log(serialize($var));

Die Methode log() aus der Klasse "Debug" kümmert sich um diese Kleinigkeit. Die PHP-Funktion serialize() macht das Object-Array sichtbar.
Das ganze funktioniert im laufenden Betrieb, das Script wird nicht abgebrochen.

Tags: