VarChangelog in Modulen

Aus DeDi-Help

Wechseln zu: Navigation, Suche

Des öfteren überschreiben Module in der Konfiguration oder im Moduloutput wichtige Variablen, sodass entweder nachfolgende Module nicht korrekt ausgeführt werden oder (in der Konfiguration) sich die angezeigte Werte verändern (z.B. wurde bei mir der Seitentitel immer auf 'Standard' geändert - ursache was der Newssystem-Teaser). Um solche Veränderungen aufspüren zu können, habe ich folgende Codeschnipsel geschrieben. Einfach in die Frontendausgabe bzw. Backendkonfiguration ganz am Anfang und ganz am Ende einfügen und die Ausgabe im Frontend (bearbeitungsansicht) bzw. Modulkonfiguration überprüfen. Es wird eine vollständige Liste aller geänderten oder neu angelegten Variablen mit ihren alten und neuen Werten angezeigt. Obiges Problem ('Standard') zeigte sich z.B. durch folgende Zeile:

Changed $title: 'Beispielseite: Bildergalerie' -> 'Standard'

Das Umbenennen der Variable $mod['title'] löste das Problem.

Code am Anfang des Moduls:

<DEDIPHP>
/*  Var-Changelog */
$___debug_var_log = array_merge($GLOBALS, array());
</DEDIPHP>

Code am Ende des Moduls:

<DEDIPHP>
/*  Var-Changelog */
echo "<pre><strong>// Var-Changelog \\</strong>\n";
foreach($GLOBALS as $___n => $___v)
 if(!in_array($___n, array('___n', '___v', '___debug_var_log', 'GLOBALS'))) {
  if(isset($___debug_var_log[$___n])) {
   if($GLOBALS[$___n] !== $___debug_var_log[$___n])
    echo " Changed \$$___n: '$___debug_var_log[$___n]' -> '$GLOBALS[$___n]'\n";
  } else
    echo " Added   \$$___n: '$GLOBALS[$___n]'\n";
 }
echo "<strong>\\ Var-Changelog //</strong></pre>\n";
unset($___debug_var_log, $___n, $___v);
</DEDIPHP>
Persönliche Werkzeuge