Debugowanie w PHP

Każdy kto pisze większą czy mniejszą aplikację spotyka się z sytuacją, że coś nie działa albo nie działa tak jak się tego spodziewaliśmy. Z pomocą przychodzi nam debugowanie, które możemy wykonać na kilka sposobów:

  • Zwykłe echo
  • Var_dump (+ kolorowanie składni z wykorzystaniem xdebug)
  • Wykorzystać firebug + firephp + klasy do PHP
  • Wbudowane narzędzia w IDE

Ja w tym wpisie chcę pokazać tylko 3  pierwsze, ponieważ uważam je za wystarczające do wyszukiwania błędów i tylko ich używam. Więc do dzieła.

Poniżej przedstawiam kod, który będziemy wykorzystywać do debugowania:

  1. $zmienna = true;
  2. $array = array(1 => "Damian" , 2=> "PHP");
  3. echo $zmienna;
  4. var_dump($zmienna);
  5. echo $array;
  6. var_dump($array);
  7.  
  8. FB::info($zmienna);
  9. FB::info($array);

Na pierwszy plan idzie echo. Do czego się on najlepiej stosuje? Głównie do sprawdzenia czy jakiś warunek (if) został spełniony lub nie oraz do sprawdzenia prostych zmiennych. Przy sprawdzeniu, czy jakaś zmienna jest true lub false dostaniemy 1 lub 0. Podczas wyechowania tablicy dostaniemy tylko informację: Array . Trochę mało….

Wykorzystamy teraz var_dump z biblioteką xdebug. Umożliwia nam ona dużo więcej. Teraz już możemy sprawdzić co nam wyjdzie po zastosowaniu var_dump:

2012-07-13_145619.png

Widać znacznie więcej informacji! Dodatkowo dzięki wykorzystaniu xdebug mamy pięknie pokolorowane zmienne co jeszcze bardziej ułatwia czytanie.

Jaką wadę ma var_dump? Ja znalazłem tylko jedną – wyświetla się w aplikacji. W przyszłości możemy zapomnieć usunąć jakiegoś var_dump i pokaże się na ekranie użytkownika. Ponadto jeśli chcemy zobaczyć jakąś dużą tablicę może nam rozwalić strukturę HTML.

Pozostaje nam ostatni kandydat – firebug + firephp – wtyczki m. in. do firefox lub chrome. Osobiście wolę stosować tą metodę ponieważ uzupełnia var_dump o to, że nie wyświetla się na ekranie przeglądarki.

Informacje pojawiają się w konsoli firebug’a:

2012-07-13_152725.pngJak widać mamy tutaj różne kolory. Co one oznaczają? Możemy zdefiniować sobie poziom informowania. Do wyboru mamy info, warn, error oraz inne. Dzięki temu łatwiej znaleźć pożądane błędy.

W przypadku dużych tablic, konsola nie wyświetli wszystkich elementów, aby to zrobić wystarczy najechać kursorem na wybraną tablicę (i opcjonalnie kliknąć). Po tym pokaże się nowe okienko ze wszystkimi zmiennymi.

 

Zróbmy krótkie podsumowanie:

ECHO:

  • Dobry do ifów
  • Dobry do prostych zmiennych…
  • …tylko i wyłącznie do prostych zmiennych (nie zobaczymy tutaj zawartości array)

VAR_DUMP:

  • Z xdebug bardzo ładne kolorowanie zmiennych i ich typów
  • Możliwość podglądu tablic
  • W przypadku dużych tablic może być mało praktyczny

FIREBUG + FIREPHP:

  • Duże możliwości (głównie takie jak var_dump)
  • Możliwość definiowania poziomu podglądu (informacja, błąd, ostrzeżenie)
  • Wyświetlanie w konsoli – nie psuje widoku strony
  • Wymaga zainstalowanych wtyczek i klas do aplikacji