PHP hiba linkelése az editorra
Gondoltam egyet még régebben, hogy milyen jó lenne, ha a PHP hibaüzenetek linkelve lennének a megfelelő helyre és erre kattintva megnyílna az editor a hibás sorra poziciónálva.
Nézzük lépésenként mire lesz szükségünk:
- létre kell hoznunk a registryben egy “editor” protocollt (lehet más a neve)
- készítenünk kell a fenti protocollhoz egy .bat filet
- módosítani kell a megfelelő helyeken a PHP kódunkat
A registryben az alábbi könyvátstruktúrát kell bejegyezni és a commandnál a batch file hivatkozást megadni:
-
shell
-
open
-
command
-
(Default) = c:\editor.bat %1
A batch fileban figyelni kell az útvonal megadására (szóközök esetén idézőjelbe), illetve az editorunk dokumentációjából ki kell keresni, hogy hogyan lehet parancssorból futtatva filenevet és sor pozicionálást átadni:
-
for /f "tokens=1,2,3* delims=:" %%i in ("%1") do start c:\"path to"\"editor dir"\editor.exe -pozicionalas %%l "%%j:%%k"
PHP-ban a saját hibakezelőbe kell beépíteni a lenti kódot. Két konstansra lesz szükségünk (EDITOR_*) az egyikkel ki/be kapcsolhatjuk a működést a másikkal megadjuk azt az útvonalat ahol a file elérhető. A “getdbtrinfo()” a normál “debug_backtrace()” kimenetén megy végig és linkeli a sorszámokat a böngésző számára:
-
// szukseges konstansok - configba
-
-
// sajat debug backtrace kimenet
-
function getdbtrinfo()
-
{
-
foreach ($tmp as $d) {
-
$line = ”;
-
-
$info .= $file.‘ ‘;
-
$line = ‘<a href="editor:’.EDITOR_PREFIX.$file.‘:’.$d[‘line’].‘">’.$line.‘</a>’;
-
}
-
}
-
$info .= $d[‘function’].NL;
-
}
-
return $info;
-
}
-
-
// sajat hibakezelo
-
function ErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
-
{
-
// … saját kód
-
echo ‘<pre>’;
-
$msg = getdbtrinfo();
-
$linemsg = ‘<b>’.$linenum.‘</b>’;
-
$linemsg = ‘<a href="editor:’.EDITOR_PREFIX.$file.‘:’.$linenum.‘">’.$linenum.‘</a>’;
-
}
-
$msg .= ‘
-
‘.$errmsg.‘ in <b>’.$filename.‘</b> on line ‘.$linemsg.‘<hr/> ‘;
-
echo $msg;
-
// … saját kód
-
}
-
A PHP kód 46. sorában azért van szóköz a < /pre> előtt mert egyébként megfeküdt tőle a kód highlighter.
FelhőBácsi
# 2007. július 4., szerda - 13:18 · válasz erre
Annó ezt megcsináltam jEditre vonatkozóan. Hasznos tudott lenni.
Üdv,
Felhő