ich schlage mich ab und an mit diesen eval() Fehlern rum, und bin absolut unglücklich darüber, das man beim Debuggen (selbst mit frontend-ausgabe) immer einen unnötigen Schritt (kopieren des Quelltextes aus dieser mini-Textarea in einen externen Editor) machen muss, da man doch meist lediglich den Code sichten muss um den Fehler zu finden!
Nun habe ich ein schönes Script gefunden (http://www.yubb.de/artikel520.html?PHPS ... e0fcc9cf55), das den Quelltext mit Zeilennummern und farblichem Highligting versieht.
Anbei mal ein kleiner Screenshot:
Was haltet Ihr davon, das in Contenido mit aufzunehmen.. ggf. kann man ja in der config.misc.php optional wählen, ob man die textbox oder das highlighting haben möchte.
Hab auch schon gesehen, das der Debugmodus an dieser Stelle etwas unvorteilhaft programmiert ist, da in nahezu jede Datei folgendes enthalten ist um die Textbox zu erzeugen:
Code: Alles auswählen
if ($cfg["debug"]["codeoutput"])
{
echo "<textarea>".htmlspecialchars($code)."</textarea>";
}
Könnte an der oben dargestellten Codestelle etwa so aussehen:
Code: Alles auswählen
if ($cfg["debug"]["codeoutput"])
{
echo debug_output($code);
}
Code: Alles auswählen
function debug_output($string)
{
/* Variable $cfg["debug"]["codeoutput_type"] aus "config.misc.php"
codeoutput_type 1 = highlight
codeoutput_type 2 = textbox*/
if($GLOBALS["cfg"]["debug"]["codeoutput_type"]=="1")
{
$Line = explode("\n",$string); //Zeilen einzeln in ein Array Laden
for($i=1;$i<=count($Line);$i++) //Zeilennummern in einer Variablen Speichern
{
$line .= " ".$i." <br>";
}
ob_start(); /* Über einen Ausgabepuffer die Ausgabe von highlight_string abfangen und einer Variablen zuweisen */
highlight_string($string);
$Code=ob_get_contents();
ob_end_clean();
// Hier wird die Ausgabe in einer header Variable gespeichert
$header='<table border="0" cellpadding="0" cellspacing="0" width="95%" style="border-style: solid; border-width:1px; border-color: white black black white">
<tr>
<td width="100%" colspan="2" style="border-style: solid; border-width:1px; border-color: white; background-color: #99ccff; font-family:Arial; color:white; font-weight:bold;">Php-Code:</td>
</tr>
<tr>
<td width="3%" valign="top" style="background-color: #99ccff; border-style: solid; border-width:1px; border-color: white;"><code>'.$line.'</code></td>
<td width="97%" valign="top" style="background-color: white;"><div style="white-space: nowrap; overflow: auto;"><code>';
// Hier wird der gehighlightete Code und die schließenden Html Tags einer Variablen zugewiesen.
$footer=$Code.'</div></code></td>
</tr>
</table>';
// Hier werden beide Variablen zurückgegeben.
return $header.$footer;
}
elseif($GLOBALS["cfg"]["debug"]["codeoutput_type"]=="2")
{
// Alte Textbox fürs debugging... jedoch etwas größer, damit man was sehen kann...
$textbox = "<textarea rows=\"50\" cols=\"50\">".htmlspecialchars($code)."</textarea>";
return $textbox;
}
}
Für das ändern der Zeile
Code: Alles auswählen
echo "<textarea>".htmlspecialchars($code)."</textarea>";
Code: Alles auswählen
echo debug_output($code);
Zudem bin ich mir noch nicht sicher, wo man die Funktion für das highlighting (also debug_output) am besten unterbringt. Habt Ihr ne Idee?