Stwórz swoją pierwszą aplikację!

Poznaj Nette Framework, tworząc prostego bloga z komentarzami. Zaczynajmy!

Po pierwszych dwóch rozdziałach będziesz mieć własnego działającego bloga i będziesz gotowy publikować swoje świetne wpisy, choć po ukończeniu tylko tych dwóch rozdziałów funkcje będą dość ograniczone. Powinieneś przeczytać także kolejne rozdziały, w których zrealizujemy dodawanie komentarzy, edycję wpisów, a na koniec zabezpieczenie bloga.

Ten samouczek zakłada, że ukończyłeś dokument Instalacja i pomyślnie przygotowałeś swoje narzędzia. Zakłada też, że rozumiesz programowanie obiektowe w PHP.

Używaj PHP 8.1 albo nowszego. 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 działać strona powitalna Web Projectu. Wypróbuj to, otwierając przeglądarkę i przechodząc pod ten URL:

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

i powinieneś zobaczyć stronę powitalną Nette Framework:

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

Jeśli masz problem, wypróbuj te kilka wskazówek.

Zawartość Web Projectu

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

nette-blog/
├── app/              ← katalog aplikacji
│   ├── Core/         ← podstawowe niezbędne klasy
│   ├── Presentation/ ← presentery, szablony i spółka
│   │   └── Home/     ← katalog presentera Home
│   └── Bootstrap.php ← klasa rozruchowa Bootstrap
├── assets/           ← surowe zasoby (SCSS, TypeScript, obrazki źródłowe)
├── bin/              ← skrypty dla wiersza poleceń
├── config/           ← pliki konfiguracyjne
├── log/              ← logi błędów
├── temp/             ← pliki tymczasowe, cache, …
├── vendor/           ← biblioteki zainstalowane przez Composera
│   └── autoload.php  ← autoloading wszystkich zainstalowanych pakietów
└── www/              ← folder publiczny - jedyne miejsce dostępne z przeglądarki
    ├── assets/       ← skompilowane pliki statyczne (CSS, JS, obrazki, …)
    └── index.php     ← plik początkowy uruchamiający aplikację

Katalog www/ przeznaczony jest do przechowywania obrazków, plików JavaScript, stylów CSS i innych publicznie dostępnych plików. To jedyny katalog bezpośrednio dostępny z internetu, więc ustaw document root swojego serwera webowego tak, żeby wskazywał tutaj (możesz to skonfigurować w Apache albo Nginksie, ale zróbmy to później, bo teraz nie jest to krytyczne).

Najważniejszym katalogiem jest dla Ciebie app/. Znajdziesz w nim plik Bootstrap.php zawierający klasę, która wczytuje framework i konfiguruje aplikację. Aktywuje autoloading, ustawia debugger i konfiguruje trasy.

Sprzątanie

Web Project zawiera stronę powitalną, którą usuniemy przed rozpoczęciem programowania. Śmiało zastąp treść pliku app/Presentation/Home/default.latte napisem “Hello world!”.

Tracy (debugger)

Niezwykle ważnym narzędziem przy tworzeniu jest narzędzie debugujące Tracy. Spróbuj wprowadzić błąd do swojego pliku app/Presentation/Home/HomePresenter.php (np. usuń nawias klamrowy z definicji klasy HomePresenter) i zobacz, co się stanie. Pojawi się strona z czerwonym ekranem i zrozumiałym opisem błędu.

ekran debuggera

Tracy znacząco pomoże Ci przy debugowaniu błędów. Zwróć też uwagę na pływający Tracy Bar w prawym dolnym rogu ekranu, który wyświetla ważne informacje o działaniu.

W trybie produkcyjnym Tracy jest oczywiście wyłączona i nie wyświetla żadnych wrażliwych informacji. Wszystkie błędy zapisywane są zamiast tego do katalogu log/. Wypróbujmy to. W pliku app/Bootstrap.php znajdź poniższy fragment kodu, odkomentuj linię i zmień parametr wywołania metody na false, żeby wyglądało to tak:

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

Po odświeżeniu strony nie zobaczysz już czerwonego ekranu. Zamiast niego wyświetli się przyjazny dla użytkownika komunikat:

ekran błędu

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

Zakomentuj linię // $this->configurator->setDebugMode(false); z powrotem. Tracy automatycznie włącza tryb deweloperski w środowisku localhost, a gdzie indziej go wyłącza.

Teraz możemy naprawić wprowadzony błąd i kontynuować budowanie naszej aplikacji.

Wyślij podziękowanie

Pokażemy Ci trik, który ucieszy autorów open source. Możesz w prosty sposób dać gwiazdkę na GitHubie bibliotekom, których używa Twój projekt. Wystarczy uruchomić:

composer thanks

Wypróbuj!