Cowboy-Debugging TYPO3

Das Debuggen ist schwierig. Das Debuggen von PHP-Code ist schwieriger. Und das Debuggen von TYPO3-Code ist wahrscheinlich das schwierigste.

DebugUtility::debug

\TYPO3\CMS\Core\Utility\DebugUtility::debug(
   $var = '',
   $header = '',
   $group = 'Debuggen'
)

Ein klarer Vorteil dieser Funktion ist, dass sie sowohl für die Frontend und Backend Ausgabe optimiert ist. Das bedeutet, dass im Backend die Debug-Ausgabe in Tabs am unteren Rand des Content-Frames angezeigt wird. Diese Registerkarten blockieren nicht Ihre Sicht auf die eigentliche Backend-Seite, die Sie zu debuggen versuchen. Sie können sogar die Größe des Tabulatorbereichs ändern und Tabs schließen, die Sie nicht mehr benötigen.

Struktur großer Arrays und Objekte:

$myVariable = array(
   'test' => array(
      'test2' => array(
         'Schlüssel' =>'Wert'
      )
   )
);
\TYPO3\CMS\Core\Utility\DebugUtility::debug($myVariable, 'Header title', 'Group title');

Frontend-Ausgabe:
DebugUtility::debug() Frontend-Ausgabe

Backend-Ausgabe:
DebugUtility::debug()

DebuggerUtility::var_dump

\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
   $variabel,
   $title = NULL,
   $maxDepth = 8,
   $plainText = FALSE,
   $ansiColors = TRUE,
   $return = FALSE,
   $blacklistedClassNames = NULL,
   $blacklistedPropertyNames = NULL
)

Debugging-Helfer von ExtBase, der auch in Fluid-Vorlagen verwendet wird:

<f:debug>{myVariable}</f:debug>

Es sieht so aus:

$myVariable = array(
   'test' => array(
      'test2' => array(
         'Schlüssel' =>'Wert'
      )
   )
);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($myVariable, 'Mein Titel');

Diese Funktion bietet eine viel besser lesbare Ausgabe als die Kernfunktion. Zuerst werden standardmäßig alle Objekte und Arrays komprimiert, so dass Sie einen guten Überblick über Ihre Ausgabe erhalten. Dann können Sie anfangen, die für Sie interessanten Teile der Ausgabe zu erweitern, was Ihnen hilft, konzentriert zu bleiben. Die Funktion ermöglicht es, eine maximale Tiefe festzulegen, so dass Sie auch sehr große Objekte ausgeben können, ohne in den Speicher zu gehen.

Es gibt jedoch ein Problem: Das ExtBase Debugger-Dienstprogramm ist eindeutig nicht für den Einsatz im Backend optimiert. In der Praxis bedeutet dies, dass Sie nicht immer alle Ausgänge sehen können: Wenn Sie ein paar Debugger-Aufrufe in einen CommandController stellen, sehen Sie nur die, die zur Höhe Ihres Browserfensters passen, die restlichen Ausgaben gehen unterhalb des Falzes verloren. Da es keine Möglichkeit gibt, Boxen zu schließen, haben Sie nur die Wahl, die Anzahl der Debug-Ausgaben zu reduzieren oder mit dem DOM-Inspektor der Entwicklerwerkzeuge Ihres Browsers herumzuspielen.

Weitere Debugging-Tipps:

Löschen Sie im Zweifelsfall alle Caches.
Manchmal können weiße Seiten behoben werden, indem Sie Ihren Code in einen Try …. catch block packen und die Ausnahmemeldungen ausgeben (besonders bei CommandController-Instanzen).