NetBeans IDE dla programisty PHP

Uruchom konfigurację

Aby móc uruchomić i debugować witrynę, najpierw musisz edytować jej właściwości. Aby to zrobić, w panelu NetBeans Projects kliknij prawym przyciskiem myszy nazwę projektu iz menu kontekstowego wybierz element Properties. Pojawi się okno dialogowe Properties projektu (pokazane na rysunku).

Rysunek B.1. Właściwości  \| Źródła

W lewym panelu okna, które się pojawi, kliknij zakładkę Source. W prawym okienku edytuj pole Web Root, aby wskazać katalog APP_DIR/public witryny. Możesz to zrobić, klikając przycisk Browse po prawej stronie pola. Następnie w oknie dialogowym kliknij katalog public, a następnie kliknij przycisk Wybierz przycisk folderu (pokazany na rysunku).

Rysunek B.2. Przeglądaj folder folderów

Następnie kliknij węzeł Run Configuration w lewym okienku. Prawy panel powinien wyświetlać ustawienia uruchamiania witryny (rysunek).

Rysunek B.3. Właściwości  \| Uruchom konfigurację

W prawym okienku widać, że bieżąca konfiguracja jest domyślna. Opcjonalnie można utworzyć kilka konfiguracji uruchamiania.

Edytuj pola w następujący sposób:

  • W polu Run As wybierz Witryna lokalna \(działająca na lokalnym serwerze WWW \).
  • W polu Project URL wpisz http://localhost. Jeśli skonfigurowałeś swój wirtualny host do nasłuchu na innym porcie (na przykład na porcie 8080 ), wprowadź numer portu, taki jak ten http://localhost:8080.
  • Zostaw pole Index Plik puste, ponieważ moduł mod _rewrite Apache'a zamaskuje nasz aktualny plik index.php.
  • W polu Arguments można określić, które parametry GET mają być przekazywane do witryny za pośrednictwem ciągu URL. Zazwyczaj pole to pozostaje puste.

Na koniec kliknij przycisk OK, aby zamknąć okno dialogowe Properties.

Prowadzenie serwisu

Uruchomienie strony oznacza otwarcie jej w domyślnej przeglądarce internetowej. Aby uruchomić witrynę, naciśnij przycisk Run na pasku narzędzi Run(rysunek B.4 ). Alternatywnie możesz nacisnąć przycisk _F6 na klawiaturze.

Rysunek B.4. Uruchom pasek narzędzi

Jeśli wszystko jest w porządku z konfiguracją uruchamiania, zostanie uruchomiona domyślna przeglądarka internetowa, aw oknie przeglądarki będzie można zobaczyć stronę Home witryny.

Ten sam efekt miałby wpisanie w przeglądarce http://localhost/, ale pasek narzędzi NetBeans pozwala to zrobić jednym kliknięciem.

Site Debugging w NetBeans

Tradycyjna technika debugowania w PHP polega na umieszczeniu funkcji var_dump() w bloku kodu, który chcesz zbadać:

Var_dump($zmienna);

Powyższe linie wypisują wartość zmiennej $zmienna na wyjściu przeglądarki. Chociaż może to być użyte do debugowania nawet złożonej witryny, powoduje to, że debugowanie jest uciążliwe, ponieważ musisz wpisać polecenie zmiennej dump w pliku źródłowym PHP, a następnie odświeżyć stronę w przeglądarce, aby zobaczyć dane wyjściowe, a następnie edytować źródło ponownie plik, dopóki nie określisz przyczyny problemu.

W przeciwieństwie do tego, gdy debugujesz swoją witrynę w IDE NetBeans, interpreter PHP wstrzymuje wykonywanie programu w każdym wierszu, w którym ustawisz breakpoint. Umożliwia to wygodne pobieranie informacji o bieżącym stanie programu, takich jak wartości zmiennych lokalnych i stos wywołań. Informacje o debugowaniu są wyświetlane w oknie NetBeans w formie graficznej.

Aby móc debugować witrynę, musisz mieć zainstalowane rozszerzenie XDebug (zob. początek rozdziału).

Aby rozpocząć sesję debugowania, w oknie NetBeans kliknij przycisk Debug na pasku narzędzi Run . Możesz również nacisnąć kombinację klawiszy CTRL + F5 na klawiaturze.

Jeśli wszystko jest w porządku, powinieneś być w stanie zobaczyć bieżący licznik programu w pierwszej linii kodu pliku index.php (pokazany na rysunku):

Rysunek B.5. Debugowanie sesji

Gdy program znajduje się w stanie wstrzymania, okno przeglądarki użytkownika zostaje zamrożone, ponieważ przeglądarka oczekuje na dane z serwera WWW. Po zakończeniu wykonywania programu przeglądarka odbiera dane i wyświetla stronę internetową.

Pasek narzędzi debugowania

Możesz wznowić/zawiesić wykonanie programu za pomocą Debug Toolbar (patrz rysunek B.6 ):

Rysunek B.6. Debug Toolbar

Przycisk Finish Debugger Session na pasku narzędzi pozwala zatrzymać debugger. Naciśnij ten przycisk, gdy skończysz debugowanie programu. Ten sam efekt spowodowałby naciśnięcie kombinacji klawiszy SHIFT + F5.

Kliknięcie przycisku Continue (lub naciśnięcie klawisza F5 ) kontynuuje wykonywanie programu do następnego punktu przerwania lub do końca programu, jeśli nie ma więcej punktów przerwania.

Przycisk Step Over na pasku narzędziowym (lub naciśnięcie klawisza F8 ) przesuwa bieżący licznik programu do następnego wiersza programu.

Przycisk Step Into na pasku narzędzi (lub naciśnięcie klawisza F7 ) przesuwa bieżący licznik programu do następnego wiersza programu, a jeśli jest to punkt wejścia funkcji, wchodzi w ciało funkcji. Skorzystaj z tego, jeśli chcesz dokładniej zbadać swój kod.

Przycisk Step Out na pasku narzędzi ( CTRL + F7 ) pozwala na kontynuowanie wykonywania programu aż do powrotu z bieżącej funkcji.

Natomiast Run to Cursor ( F4 ) pozwala na kontynuowanie wykonywania programu aż do linii kodu, w której umieścisz kursor. Może to być wygodne, jeśli chcesz pominąć blok kodu i zatrzymać się w określonej linii programu.

Punkty przerwania

Zazwyczaj ustawia się jeden lub kilka punktów przerwania na wiersze, które mają być debugowane w trybie krok po kroku. Aby ustawić punkt przerwania, umieść mysz po lewej stronie linii kodu, w miejscu, w którym ma się pojawić punkt przerwania, i kliknij numer linii. Możesz też umieścić kursor kursora w wierszu, w którym chcesz ustawić punkt przerwania, i nacisnąć kombinację klawiszy CTRL + F8.

Po ustawieniu punktu przerwania linia jest oznaczona kolorem czerwonym, a po lewej stronie pojawia się mały czerwony prostokąt (pokazany na rysunku):

Rysunek B.7. Ustawianie punktu przerwania

Uważaj, aby nie ustawiać punktu przerwania w pustym wierszu lub w wierszu komentarza.
Taki punkt przerwania zostanie zignorowany przez XDebug i będzie oznaczony przez zepsuty
kwadrat (patrz przykład na rysunku ):

Rysunek B.8. Nieaktywny punkt przerwania

Możesz przechodzić pomiędzy punktami przerwania klawiszem F5. Ten przycisk kontynuuje wykonywanie programu, dopóki nie napotka następnego punktu przerwania. Gdy przepływ programu dojdzie do punktu przerwania, interpreter PHP zostanie wstrzymany i można przejrzeć stan programu.

Możesz zobaczyć pełną listę punktów przerwania ustawionych w oknie Breakpoints (patrz rysunek ). _Okno _Breakpoints znajduje się w dolnej części okna NetBeans. W tym oknie możesz dodawać nowe punkty przerwania lub anulować ustawione punkty przerwania, które zostały już ustawione.

Rysunek B.9. Okno punktów przerwania

Oglądanie zmiennych

Gdy interpreter PHP jest wstrzymany, możesz wygodnie obserwować wartości zmiennych PHP. Prostym sposobem przeglądania zmiennej jest po prostu umieszczenie kursora myszy nad nazwą zmiennej wewnątrz kodu i czekanie na sekundę. Jeśli wartość zmiennej można ocenić, zostanie ona wyświetlona wewnątrz małego wyskakującego okna.

Innym sposobem oglądania zmiennych jest okno Variables (pokazane na rysunku), które jest wyświetlane w dolnej części okna NetBeans. Okno Variables ma trzy kolumny: Name, Type i Value.

Rysunek B.10. Okno zmiennych

Przede wszystkim będziesz mieć do czynienia z trzema rodzajami zmiennych: super globals, locals i $this:

  • Zmiene Super global są specjalnymi zmiennymi PHP, takimi jak $_GET,$_POST, $_SERVER,$_COOKIES i tak dalej. Zazwyczaj zawierają informacje o serwerze i parametry przekazywane przez przeglądarkę internetową jako część żądania HTTP.
  • Zmienne lokalne są zmiennymi, które są w zakresie obecnej funkcji (lub metody klasy ).
  • _Zmienna $this_ wskazuje na bieżącą instancję (obiekt) klasy, jeśli bieżący kod jest wykonywany w kontekście klasy PHP.

Niektóre zmienne można rozwinąć (aby rozwinąć zmienną, należy kliknąć ikonę trójkąta po lewej stronie nazwy zmiennej ). Na przykład, klikając i rozszerzając zmienną $this, można oglądać wszystkie pola instancji klasy. Jeśli rozwiniesz zmienną tablicową, będziesz mógł oglądać elementy tablicy.

Za pomocą okna Variables można nie tylko oglądać wartość zmiennej, ale także zmieniać wartość w locie. Aby to zrobić, umieść kursor myszy nad kolumną wartości i kliknij nad nią. Pojawi się pole edycji, w którym można ustawić nową wartość zmiennej.

Call Stack

call stack wyświetla listę zagnieżdżonych funkcji, których kod jest wykonywany w chwili (pokazany na rysunku poniżej). Każda linia stosu wywołań (zwana także ramką stosu ) zawiera pełną nazwę klasy, nazwę metody w klasie i numer linii. Przenosząc stos, można lepiej zrozumieć aktualny stan wykonania programu.

Rysunek B.11. Okno wywołania stosuNa przykład na rysunku widać, że aktualnie wykonywana jest operacja IndexController::aboutAction(), która została wywołana przez metodę AbstractActionController::onDispatch() i tak dalej. Możemy przechodzić stos wywoławczy, dopóki nie dojdziemy do pliku index.php, który jest wierzchołkiem stosu. Możesz także kliknąć ramkę stosu, aby zobaczyć miejsce kodu, który jest aktualnie wykonywany.

Opcje debugowania

NetBeans pozwala skonfigurować niektóre aspekty działania debuggera. Aby otworzyć okno dialogowe Opcje, wybierz menu Narzędzia-> Opcje. W wyświetlonym oknie dialogo(rysunek B.12 )wym kliknij kartę PHP, a następnie w tej zakładce wybierz podfolder Debugging.

Rysunek B.12. PHP Debugging Options

Zazwyczaj nie zmieniasz większości tych opcji, musisz tylko mieć pojęcie o tym, co robią. Oto krótki opis opcji debugowania:

  • Parametry Debugger Port oraz Session ID definiują sposób łączenia NetBeans z XDebug. Domyślnie numer portu to 9000. Numer portu powinien być taki sam jak port debuggera ustawiony w pliku php.ini podczas instalowania XDebug. Nazwa sesji jest domyślnie netbeans-xdebug. Zwykle nie zmieniasz tej wartości.
  • Parametr Stop at First Line sprawia, że ​​debugger zatrzymuje się w pierwszym wierszu pliku index.php, zamiast zatrzymywać się w pierwszym punkcie przerwania. Może to być denerwujące, więc możesz odznaczyć tę opcję.
  • Grupa opcji Watches and Balloon Evaluation jest domyślnie wyłączona, ponieważ mogą one powodować błąd XDebug. Możesz włączyć te opcje tylko wtedy, gdy wiesz, co robisz.

  • Parametry Maximum Depht Structures (Maksymalna głębokość struktur) określają, czy zagnieżdżone struktury (jak zagnieżdżone tablice, obiekty w obiektach itp. ) Będą widoczne czy nie. Domyślnie głębokość jest ustawiona na 3.

  • Opcja Maximum number of Childrens (Maksymalna Liczba Potomków) definiuje liczbę elementów tablicy wyświetlanych w oknie Variables. Jeśli ustawisz to na, powiedzmy 30, zobaczysz tylko pierwszych 30 pozycji, nawet jeśli tablica ma więcej niż 30 elementów.

  • Opcja Pokaż żądane adresy URL po włączeniu wyświetla adres URL, który jest aktualnie przetwarzany. Wydrukuje adres URL do okna Output.

  • Opcja Debugger Console pozwala zobaczyć wyjście debugowanych skryptów PHP. Dane wyjściowe są wyświetlane w oknie Output. Jeśli zamierzasz korzystać z tej funkcji, zalecane jest dodanie parametru output_buffering = Off w sekcji[xdebug]twojego pliku php.ini, w przeciwnym razie wyjście może pojawić się z opóźnieniami.

Profilowanie

Gdy Twoja strona jest gotowa i działa, zazwyczaj chcesz ją przyspieszyć. XDebug zapewnia możliwość profilu Twojej witryny. Profilowanie oznacza określanie, które metody klasy (lub funkcje ) tracą czas. Umożliwia to określenie miejsc wąskich gardeł w kodzie i rozwiązywanie problemów z wydajnością.

Dla każdego żądania HTTP rozszerzenie XDebug mierzy czas wykonywania funkcji i zapisuje informacje profilowania do pliku. Zazwyczaj pliki informacyjne profilowania są umieszczane w katalogu tymczasowym systemu (w systemie Linux, do katalogu /tmp ) i mają nazwy takie jak xdebug.out. <timestamp>, gdzie <timestamp> - to znacznik czasu żądania HTTP. Wszystko, co musisz zrobić, to otworzyć plik profilujący i przeanalizować go.

Aby włączyć profiler XDebug, należy ustawić następujący parametr konfiguracyjny XDebug w pliku xdebug.ini:

<xdebug.profiler_enable = 1

Niestety, NetBeans for PHP nie ma osadzonego narzędzia do wizualizacji wyników profilowania. Dlatego musisz zainstalować zewnętrzne narzędzie do wizualizacji. Poniżej przedstawiamy instrukcje dotyczące instalacji prostego narzędzia internetowego o nazwie Webgrind. Webgrind może działać na dowolnej platformie, ponieważ to samo narzędzie jest napisane w PHP.

Instalacja Webgrind jest bardzo prosta.

Najpierw ściągnij webgrind ze strony projektu i rozpakuj go do jakiegoś folderu. W systemie Linux możesz to zrobić za pomocą następujących poleceń:

cd ~

wget https: // github.com/jokkedk/webgrind/archive/master.zip

unzip master.zip

Powyższe polecenia zmienią Twój katalog roboczy na katalog domowy, a następnie ściągną archiwum Webgrind z Internetu, a następnie rozpakują archiwum.

Następnie musisz poinformować serwer Apache, gdzie można znaleźć pliki Webgrind. Oznacza to, że musisz skonfigurować oddzielny host wirtualny. Nie zapomnij zrestartować serwera WWW Apache po skonfigurowaniu hosta wirtualnego.

Wreszcie, otwórz Webgrind w przeglądarce, przechodząc do adresu URL instalacji Webgrind. Na przykład, jeśli skonfigurowałeś host wirtualny do nasłuchu na porcie 8080, wpisz http://localhost: 8080) na pasku nawigacyjnym przeglądarki i naciśnij Enter. Strona internetowa Webgrind powinna pojawić się:

Rysunek B.13. Strona wyjściowa WebgrindNa górze strony Webgrind możesz wybrać procent najcięższych wywołań funkcji. Domyślnie jest ustawiony na 90%. Ustawienie tego na niższy procent spowoduje ukrycie funkcji o mniejszej częstotliwości.

Rysunek B.14. Webgrind Wybierz

Lista rozwijana po prawej stronie pola procentowego pozwala wybrać plik danych profilowania do analizy. Domyślnie jest ustawiony na Auto(newest), co zmusza Webgrind do używania pliku z najnowszym znacznikiem czasu. Może być konieczne wybranie innego pliku, na przykład, jeśli strony internetowe korzystają z asynchronicznych żądań AJAX.

Prawe menu rozwijane pozwala ustawić jednostki, które powinny być używane do pomiaru danych. Możliwe opcje to: procent (domyślnie ), milisekundy i mikrosekundy.

Po wybraniu wartości procentowej, nazwy pliku i jednostek kliknij przycisk Aktualizuj, aby umożliwić programowi Webgrind wizualizację danych dla użytkownika (obliczenia mogą zająć kilka sekund ). Po zakończeniu obliczeń powinieneś zobaczyć tabelę wywołań funkcji, posortowaną w porządku malejącym według funkcji waga. Najcięższe funkcje będą wyświetlane u góry.

Tabela ma następujące kolumny:

  • Pierwsza kolumna ( Function ) wyświetla nazwę klasy, po której następuje nazwa metody (w przypadku wywołania metody ) lub nazwa funkcji (w przypadku zwykłej funkcji ).
  • Druga kolumna zawiera ikony akapitu, które można kliknąć, aby otworzyć odpowiedni plik źródłowy PHP, którego funkcja jest zdefiniowana w przeglądarce internetowej. Kolumna _Invocation Count_ pokazuje ile razy funkcja została wywołana. Kolumna _Total Self Cost_ pokazuje całkowity czas potrzebny na wykonanie wbudowanego kodu PHP w funkcji (z wyłączeniem czasu spędzonego na wykonywaniu innych niestandardowych funkcji ). Kolumna _Total Inclusive Cost zawiera całkowity czas wykonania funkcji, w tym wbudowany kod PHP i inne wywoływane funkcje użytkownika.

Kliknięcie nagłówka kolumny umożliwia sortowanie danych w porządku rosnącym lub malejącym.

Możesz kliknąć ikonę trójkąta obok nazwy funkcji, aby rozwinąć listę wywołań funkcji. Ta lista pozwala zobaczyć, kto nazwał tę funkcję i ile czasu zajmuje, i zawiera następujące kolumny:

  • Calls to funkcje rodzica lub metody klasy wywołujące tę funkcję (child );
  • Całkowity koszt połączenia to całkowity czas wykonania tej funkcji, po wywołaniu z funkcji nadrzędnej;
  • Count - liczba przypadków, w których rodzic wywołuje funkcję potomną.

Kolorowy pasek na górze strony wyświetla wkład różnych typów funkcji:

  • Blue oznacza funkcje wewnętrzne PHP (wbudowane );
  • Lavender to czas potrzebny na dołączenie (lub wymaganie ) plików PHP;
  • Green pokazuje udział twoich własnych metod klasowych;
  • Orange oznacza czas zajęty na tradycyjnych proceduralnych funkcjach (funkcje, które nie są częścią klas PHP ).

    Należy pamiętać, że profiler tworzy nowy plik danych w katalogu /tmp dla każdego żądania HTTP do Twojej witryny. Może to spowodować wyczerpanie miejsca na dysku, które można naprawić tylko po ponownym uruchomieniu systemu.
    Po zakończeniu profilowania aplikacji zalecane jest wyłączenie profilowania poprzez edycję pliku php.ini, i zmienę parametru xdebug.profiler_enable, , a następnie ponowne uruchomienie serwera WWW Apache:

    xdebug.profiler_enable = 0