|
Тъй, като няма реално точен превод на термина "Debug" по-нататък ще го използваме.
"Дебъг" е вече приет термин и мисля, че не би притеснило никой в областта. "Бъг" – буквално преведено е "буболечка". Иначе казано – малка грешка в програмата, която се открива трудно и сработва само при определени обстоятелства. Какво е Дебъг Прост и ефикасен метод за откриване на грешки. Имате грешка – открийте я! В тази част ще ви запознаем с с някои от основните методи за откриванена грешки. Също така и с някои от вградените в PHP функции, които са предназначени за тази цел и биха ви помогнали, като например var_dump(). Съществуват разбира се и други мощни средсва за пълноценен дебъг, като поставяне на точки на прекъсване, набюдаване на променливи, но това не е целта на тази част. Първо правило: винаги проверявай! Това е моето първо правило, когато пиша приложения. Винаги е възможно в кода да има грешка. Винаги проверявайте резултата! Ето един примерен фрагмент, в който няма синтактична грешка: CODE
Ако този скрипт получи HTTP-GET заявка от вида: http://www.example.com/myScript.php?name=Alan Резултата ще бъде коректен: Hello Alan, welcome to our website! Но какво ще стане, ако name няма стойност параметъра. Ето резултата: Hello , welcome to our website! Съгласете се, че не е професионално. За да разрешим проблема е необходимо просто да проверим стойността на параметъра name. Така скрипта ни ще изглежда по следния начин: CODE
Както виждате, тук проверяваме дали параметъра name има стойност и ако не, му присвояваме подразбираща се такава – в случая „Visitor”. Сега нека стартираме нашия скрипт, без парамерър name. Ето и резултата: Hello Visitor, welcome to our website! Примерът до тук показа важността на проверките за очаквани грешки при приемане на http заявки. В следващия пример ще покажем грешки и тяхната обработка при работа с база данни. Примера е с MySQL. Разгледайте следващия код (грешката в SQL кода е умишлена и ще бъде разгледана по-долу): CODE
На пръв поглед - напълно коректен код. Първо отваряме връзка с базата данни, конструираме SQL заявка и извеждаме резултата в подреден списък. Но да приемем, че не работи. Нещо пречи на нормалната работа на скрипта. Имаме "бъг", но нямаме идея къде може да бъде. Сега нека добавим код, който ще ни помогне да открием проблема. Първо, в горния пример е пропусната проверката дали имаме връзка с базата данни. По различни причини е възможно тази връзка да не се отвори. CODE
Както забелязвате, важно е да поставяме проверки на критични места в програмите. В примера, ако $db има стоност false, тоест няма връзка с базата данни, ние прекратяваваме работата на скрипта с фунция die() и съответното съобщение за грешка върнато от функция mysql_error(). Функцията mysql_error() връща текст, който би ни помогнал да установим причината за проблема при свързването с базата данни. Тоест защо е пропаднал израза CODE
Ако сега, след като сме изчисили „бъговете”, стартираме нашия скрипт, ще видим, че той работи, но все още не получаваме желания резултат. Може би сте забелязали нередност в SQL синтаксиса? Сега ще разгледаме изпълнението на SQL заявката към MySQL сървъра. Ще разгледаме случай в който заявката не е коректна и функцията mysql_query() връща грешка. Техниката е същата, както в предния пример. Необходимо е да с провери дали заявката е изпълнена успешно и да се реагира според резултата. Отново ще използваме комбинацията от функциите die() и mysql_error(). Ето и кода: CODE
Грешката е очевидна. Използването на SQL функцията max() без клауза "Group By". Сега ще получим съобщение за грешка (може да варира в зависимост от версиите): "Mixing of GROUP columns ...." Проблемът е ясен. Премахването на ненужното поле MAX(rating) решава проблема. Надяваме се, че с тези примери и коментари помогнахме значително да подобрите опита си в откриването на грешки. Въпреки, че добавянето на допълнителен код и усложняваняване на програмите изглежда неоправдано, помислете си за код от хиляди редове. Откриването на проблем в такъв код може да се окаже непосилна задача. Затова поставянето на коментари и проверки за грешки е добра идея.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









