Heute will ich euch Möglichkeiten vorstellen innerhalb von TYPO3 zu debuggen. Dies richtet sich gerade an die Entwickler, weil sich dies Thema hauptsächlich um PHP dreht. Aber fangen wir mal an…
PHP
Der Standardfall ist ein PHP Objekt oder ein Array wessen Inhalt man überprüfen möchte. Dies geht natürlich mittels PHP Boardmitteln indem man ein print_r oder ein var_dump auf die Variable macht. Wenn man auf die TYPO3 API zurück greift, dann kann man sich die Variable auch formatiert ausgeben.
echo t3lib_div::debug($data,'Name der Ausgabe'); |
Mit dem zweiten Parameter kann man den Ausgaben eine Aussagekraft geben(sprich, einen Titel), damit man, wenn man mehrere Ausgaben macht, alle auseinander halten kann.
Datenbank
Das TYPO3-Datenbank Objekt hat mehrere Möglichkeiten zu debuggen. Einerseits kann man sich Informationen über fehlerhafte Queries direkt ausgeben lassen. Dazu muss man in seiner Extension einfach die Variable „debugOutput“ auf true setzen:
$GLOBALS['TYPO3_DB']->debugOutput = true; |
Im Anschluss bekommt man Informationen über alle Queries welche zu Fehlern geführt haben. Wenn Ihr mehr Einfluss auf die Queries haben wollt, oder auch funktionierende Queries einsehen wollt, dann könnt ihr die Option „store_lastBuiltQuery“ benutzen. Im Anschluss findet ihr immer die letzte Query in der „debug_lastBuiltQuery“ Variablen.
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true; // PHP + SQL hier echo $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery; |
Mit dieser Struktur habt ihr mehr Freiheit und könnt mit der Query sonst was anstellen(Mailing, Logs etc.)
Extensions mit GUI
Wenn man eine übersichtliche GUI haben will und längere Codestrecken im Nachhinein überwachen/rekonstruieren will, kann man auf die Extension devlog zurückgreifen. Mit dieser Extension kann man den Aufruf-Verlauf der t3lib_div::devLog()-Funktion verfolgen und nachprüfen. Und so geht’s…
Setzt in eurem Programm eine Konstante oder fragt config.debug TS (s.u.) ab. Im Anschluss ruft ihr, überall wo ihr was debuggen wollt immer die t3lib_div::devLog()-Funktion auf (Konstante prüfen nicht vergessen, damit man den Log einfach abschalten kann: Siehe nächste Codebox). Der erste Parameter der Funktion ist die Nachricht. Der zweite Parameter ist der Extension Key. Der dritte Pflichtparameter ist ein Status. Hierbei gibt es mehrere verschiedene Zustände:
- -1 für OK
- 0 für Informtions Nachricht
- 1 für einen Hinweis
- 2 für eine Wahnung
- 3 für einen Fehler
Der letzte Parameter kann zusätzliche Daten entgegen nehmen und ist optional.
if($GLOBALS["TSFE"]->config["config"]["debug"]) { // Oder Konstante if($pruefeVar) t3lib_div::devLog('Alles OK', $this->extKey, -1); else t3lib_div::devLog('Nichts OK', $this->extKey, 3); } |
Install Tool
Im Installationtool gibt es mehrere Einstellungen die das debuggen konfigurieren können:
- [SYS][devIPmask] – Definiert eine Liste von IP Adressen, bei denen Entwickler Ausgaben im Frontend erlaubt sind. Die debug()-Methode benutzt diesen Filder. Dies ist empfehlenswert wenn ihr in einem Live System debuggen wollt/müsst.
- [SYS][sqlDebug] – Hat die selber Funktion wie „$GLOBALS[‚TYPO3_DB‘]->debugOutput“ oben. Fehlerhafte Queries werden ausgegeben.
- [SYS][displayErrors] – Regelt der verhalten von Fehlern in PHP. In Live Systemen immer „0“. Wenn aber entwickelt wird, ist es hilfreich „2“ zu benutzen wenn die devIPmask richtig gesetzt ist, andernfalls „1“.
TypoScript
Im TypoScript gibt es die Option „config.debug“, welche man zum einschalten des Debuggen benutzen kann. Diese gibt zum einen weitere Informationen in der Seite aus(Rendering Zeit), zum anderen kann der boolesche Wert in Extensions benutzt werden um das Debuggen ein bzw. aus zu schalten (Siehe oben).
Viel Spaß beim debuggen…