Pisanie pierwszej aplikacji!

Poznajmy razem Nette Framework, tworząc prosty blog z komentarzami. Zaczynajmy!

Już po pierwszych dwóch rozdziałach będziemy mieli swój własny działający blog i będziemy mogli publikować swoje wspaniałe posty, chociaż funkcje będą na razie w znacznym stopniu ograniczone. Powinieneś przeczytać również następne rozdziały, gdzie zaprogramujemy dodawanie komentarzy, edytowanie artykułów i na koniec zabezpieczymy blog.

Ten poradnik zakłada, że przeczytałeś stronę Instalacja i pomyślnie przygotowałeś potrzebne narzędzia. Zakłada również, że rozumiesz programowanie obiektowe w PHP.

Używaj PHP 8.1 lub nowszej wersji. Kompletną aplikację znajdziesz na GitHubie.

Strona powitalna

Zacznijmy od utworzenia nowego projektu w katalogu nette-blog:

composer create-project nette/web-project nette-blog

W tym momencie powinna już działać strona startowa Web Projectu. Wypróbujemy to, otwierając przeglądarkę pod następującym adresem URL:

http://localhost/nette-blog/www/

i zobaczymy stronę startową Nette Frameworku:

Aplikacja działa i możesz zacząć wprowadzać zmiany.

Jeśli wystąpił problem, wypróbuj te wskazówki.

Zawartość Web Project

Web Project ma następującą strukturę:

nette-blog/
├── app/              ← katalog aplikacji
│   ├── Core/         ← podstawowe klasy niezbędne do działania
│   ├── Presentation/ ← presentery, szablony itp.
│   │   └── Home/     ← katalog presentera Home
│   └── Bootstrap.php ← klasa startowa Bootstrap
├── bin/              ← skrypty uruchamiane z linii poleceń
├── config/           ← pliki konfiguracyjne
├── log/              ← logowanie błędów
├── temp/             ← pliki tymczasowe, cache, …
├── vendor/           ← biblioteki zainstalowane przez Composer
│   └── autoload.php  ← autoloading wszystkich zainstalowanych pakietów
└── www/              ← katalog publiczny - jedyny dostępny z przeglądarki
    └── index.php     ← plik początkowy, który uruchamia aplikację

Katalog www/ jest przeznaczony do przechowywania obrazów, plików JavaScript, stylów CSS i innych publicznie dostępnych plików. Tylko ten katalog jest dostępny z internetu, więc ustaw katalog główny swojej aplikacji tak, aby wskazywał właśnie tutaj (można to ustawić w konfiguracji Apache lub nginx, ale zróbmy to później, teraz to nie jest ważne).

Najważniejszy folder dla nas to app/. Tutaj znajdziemy plik Bootstrap.php, w którym znajduje się klasa służąca do załadowania całego frameworka i ustawienia aplikacji. Aktywuje się tutaj autoloading, ustawia się tutaj debuggerrouting.

Sprzątanie

Web Project zawiera stronę startową, którą usuniemy, zanim zaczniemy coś programować. Bez obaw zastąpimy więc zawartość pliku app/Presentation/Home/default.latte tekstem “Witaj świecie!”.

Tracy (debugger)

Niezwykle ważnym narzędziem do rozwoju jest narzędzie do debugowania Tracy. Spróbuj wywołać jakiś błąd w pliku app/Presentation/Home/HomePresenter.php (np. usuwając nawias klamrowy w definicji klasy HomePresenter) i zobacz, co się stanie. Pojawi się strona z powiadomieniem, która w zrozumiały sposób opisuje błąd.

ekran debuggera

Tracy ogromnie nam pomoże, gdy będziemy szukać błędów w aplikacji. Zwróć również uwagę na pływający pasek Tracy Baru w prawym dolnym rogu ekranu, który zawiera informacje z działania aplikacji.

W trybie produkcyjnym Tracy jest oczywiście wyłączona i nie wyświetla żadnych wrażliwych informacji. Wszystkie błędy są w tym przypadku zapisywane w folderze log/. Spróbujmy to zrobić. W pliku app/Bootstrap.php odkomentujemy następujący wiersz i zmienimy parametr wywołania na false, aby kod wyglądał tak:

...
$this->configurator->setDebugMode(false);
...

Po odświeżeniu strony już nie zobaczymy Tracy. Zamiast niej wyświetli się przyjazna dla użytkownika wiadomość:

ekran błędu

Teraz spójrzmy do katalogu log/. Tutaj (w pliku exception.log) znajdziemy zalogowany błąd, a także już znaną stronę z komunikatem o błędzie (zapisaną jako plik HTML o nazwie zaczynającej się od exception-).

Zakomentujemy ponownie wiersz // $configurator->setDebugMode(false);. Tracy automatycznie włączy tryb deweloperski na localhost i wyłączy go wszędzie indziej.

Błąd, który stworzyliśmy, możemy naprawić i kontynuować pisanie aplikacji.

Wyślij podziękowania

Pokażemy Ci sztuczkę, którą ucieszysz autorów open source. W prosty sposób dasz na GitHubie gwiazdkę bibliotekom, których używa Twój projekt. Wystarczy uruchomić:

composer thanks

Spróbuj!