ПредишенСледващото

Отстраняване на грешки в PHP скриптове

Както знаем, когато грешка PHP в най-добрия дава номера на реда, където е възникнала, и кратко описание, а в най-лошия (ако е зададен хостинг разстояние буболечки дисплей изобщо) - само празна страница. Все още не е удобен за отстраняване на грешки и за крайния потребител. Възниква въпросът: как да се направи съобщение за грешка, по-информативен.

Оказва се, че всичко е съвсем проста. В PHP, има функция специална set_error_handler (), която ви позволява да зададете своя собствена манипулатор oshibok.Edinstvenny опция му - това е името на функцията за манипулатор, който се подава, ако възникне грешка. функция Хендлър разполага с 4 параметри: брой грешки, текст грешка, името на файла, в който е възникнала грешката и номера на реда във файла.

Въпреки това, тези данни не може да бъде достатъчно. Често искате да покажете целия пакет на повикване, за да видите къде точно е възникнала грешката. Вземи vyzvov стека да използвате debug_backtrace функция, която връща масив от обратни повиквания. Всеки елемент от този масив е хеш със следните полета: функция - името на функцията, аргументи - Функционални аргументи, файл - името на файла на скрипта, в която се нарича. линия - номера на реда, където повикването е направено функция.

Забележка: В някои случаи, файлове и ред не са настроени, винаги ги проверите (или дори някой от индексите на масивите) Използването Isset, и постоянно - използване на определени, в противен случай съществува рекурсивна покана да манипулатор грешка. Освен това, ако направите функция оттегляне аргументи, трябва да се вземат мерки да не се издава парола за база данни, в случай че възниква грешка на етапа на свързване към базата данни (т.е. ако mysql_connect функция или други подобни). Най-лесният вариант - да го замени с str_replace звездички или други специални символи преди печат.

Вземем примера на функция манипулатор:

Също така, често, когато отстраняване на грешки скриптове искате да покажете стойността на една променлива, за да се разбере грешни данни, взети на всеки етап. Използва за тази print_r - не най-доброто решение (по-специално, когато отстраняване на грешки на сайта на живо), тъй като стойността може да донесе на грешното място (например, ако използвате шаблона, дори преди HTML-хедър). В допълнение, по-правилно решение - да се помни, стойността на променливата за отстраняване на грешки, които след това да доведе, където няма да пречи на появата (например, в мазето на сайта).

Аз използва за тази цел, като функция:

Тази функция екрани всички параметри, подавани към него и съхранява глобална променлива $ GLOBALS [ 'IntBF_debug'], от който може да се показва във всеки подходящо място с помощта на конвенционално ехо.

Ако искате да прекратите сценария с грешка по инициатива на разработчика (например след неправилна SQL-заявка), използвайте trigger_error функция. Тази функция има два параметъра: първата - низ със съобщение за грешка, която ще бъде предавана на параметър $ errstr манипулатор, а вторият - код за грешка, която може да бъде един от трите константи: E_USER_ERROR (ще доведат до приключване на изпълнението), E_USER_WARNING, E_USER_NOTICE ,

Използването на тези функции може да помогне значително да спести много време и да направи потребителят на сайта приятелски. Но в същото време, ние не трябва да забравяме, че има ситуации, в които този манипулатор няма да работи, например, когато се обадите несъществуваща функция или да се свържете с изисква скрипт, който съдържа синтактична грешка.

Има още няма коментари за ползване

Свързани статии

Подкрепете проекта - споделете линка, благодаря!