PHP szkriptek hibakeresése

PHP szkriptek hibakeresése

Mint tudjuk, mikor PHP hibát legjobb megadja a sor számát, ahol ez történt, és egy rövid leírást, és a legrosszabb (ha konfigurálva tárhely ki a hibákat kijelző egyáltalán) - csak egy üres oldalt. Ez nem túl kényelmes a hibakereséshez és a végfelhasználó számára is. Felmerül a kérdés: hogyan lehet a hibaüzenet kimenetét informatívabbá tenni.

Kiderül, hogy minden elég egyszerű. A PHP-ben van egy speciális függvény set_error_handler (), amely lehetővé teszi a saját hibakereső megadását, az egyetlen paramétere a kezelő függvény neve, amelyet hiba esetén hívnak le. A kezelő funkciónak 4 paramétere van: a hiba száma, a hibaüzenet, a fájl neve, amelyben a hiba történt, és a sor száma ebben a fájlban.

De ez az adat nem elegendő. Gyakran szükség van a teljes híváscsomag megjelenítésére annak érdekében, hogy megértsük pontosan a hibát. A debug_backtrace függvény segítségével megkaphatja a köteget, amely visszaküldi a visszahívásokat. Ennek a tömbnek minden egyes eleme a következő mezőkből álló hash: függvény - függvény neve, args - függvény argumentum, fájl - annak a parancsfájlnak a neve, amelyben hívták. line a vonal száma, ahol a függvényt hívták.

Megjegyzés: Bizonyos esetekben, neve és a sor nincs beállítva, mindig ellenőrizze őket (vagy bármely a tömb indexek) használata isset, és állandó - meghatározott és, különben fennáll a rekurzív hívás a hibakezelő. Ezen felül, ha egy kivonási függvényargumentumok, meg kell vigyázni, hogy ne ki az adatbázis jelszavát abban az esetben, hiba keletkezik a szakaszában az adatbázishoz csatlakozáshoz (azaz, ha mysql_connect funkció vagy hasonló). A legegyszerűbb lehetőség a str_replace helyett csillagokkal vagy más speciális karakterekkel helyettesíthető a kimenet előtt.

Vegyünk egy példát a kezelő funkcióról:

Emellett gyakran, amikor hibakeresés script szeretné megjeleníteni a változó értékét, hogy megértsék a hibás adatokat hozott bármely szakaszában. Felhasználás erre print_r - nem a legjobb megoldás (különösen, ha hibakeresés élő saját), mert az érték hozhat a rossz helyen (például, ha használja a sablont, még mielőtt HTML-fejléc). Ezen túlmenően, a több helyes döntés -, hogy emlékezzen az értéket a debug változó, amely aztán vezet, ahol nem zavarja a megjelenése (például a pincében az oldalon).

Ezt a funkciót erre a célra használom:

Ez a funkció elhagyja az összes átadott paramétert, és tárolja azt a $ GLOBALS ['IntBF_debug'] globális változóban, ahonnan a szokásos visszhanggal bármely megfelelő helyen kiadható.

Ha azt szeretnénk, hogy megszakítja a szkript egy hiba a kezdeményezésére a fejlesztő után (pl téves SQL-lekérdezés), használja trigger_error funkciót. Ez a funkció két paramétert: az első - a húr egy hibaüzenettel, ami átkerül a paraméter $ errstr felvezető, és a második - egy hibakódot, ami lehet egy három állandók: E_USER_ERROR (vezet a befejezése a végrehajtás), E_USER_WARNING, E_USER_NOTICE .

Ezeknek a funkcióknak köszönhetően sok időt takaríthat meg, és a webhelyet barátságosabbá teheti a felhasználó számára. De ugyanakkor nem szabad megfeledkeznünk arról, hogy vannak olyan helyzetek, amikor ez a kezelő nem működik, például amikor egy nem létező függvényt hívunk fel vagy csatlakoztatunk, ha szintaktikai hibát tartalmazó szkriptet használunk.

Nincs még értékelés.

Kapcsolódó cikkek