Piszemy pierwszą aplikację!

Poznajmy wspólnie Nette Framework, tworząc jednocześnie prosty blog z komentarzami. Zróbmy to!

Po pierwszych dwóch rozdziałach będziesz miał swój własny działający blog i będziesz gotowy do publikowania swoich niesamowitych postów, chociaż funkcje będą dość mocno ograniczone po ukończeniu tych dwóch rozdziałów. Aby uczynić rzeczy milszymi dla Twoich użytkowników, powinieneś również przeczytać kolejne rozdziały i wciąż ulepszać swoją aplikację.

Ten samouczek zakłada, że ukończyłeś dokument instalacyjny i pomyślnie skonfigurowałeś swoje narzędzia. Zakłada również, że rozumiesz programowanie obiektowe w PHP.

Proszę używać PHP 8.1 lub nowszego. Kompletną aplikację można znaleźć na GitHubie.

Strona powitalna

Zacznijmy od utworzenia nowego projektu w katalogu nette-blog:

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

W tej chwili powinna być uruchomiona strona powitalna projektu internetowego. Wypróbuj ją, otwierając przeglądarkę i przechodząc do następującego adresu URL:

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

i zobaczyć stronę główną Nette Framework:

Aplikacja działa i można rozpocząć edycję.

Jeśli jest problem, spróbuj tych kilku wskazówek.

Zawartość projektu internetowego

Projekt internetowy ma następującą strukturę:

nette-blog/
├── app/              ← adresář s aplikací
│   ├── Core/         ← podstawowe niezbędne klasy
│   ├─── UI/          ← prezentery, szablony i inne.
│   │   └── Home/     ← Katalog prezenterów Home
│   └── Bootstrap.php ← zaváděcí třída Bootstrap
├── bin/              ← skripty spouštěné z příkazové řádky
├── config/           ← konfigurační soubory
├── log/              ← logování chyb
├── temp/             ← dočasné soubory, cache, …
├── vendor/           ← knihovny instalované Composerem
│   └── autoload.php  ← autoloading všech nainstalovaných balíčků
└── www/              ← veřejný adresář - jediný přístupný z prohlížeče
    └── index.php     ← prvotní soubor, kterým se aplikace spouští

Katalog www/ służy do przechowywania obrazów, plików JavaScript, arkuszy 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, aby wskazywał właśnie na niego (możesz to ustawić w konfiguracji Apache'a lub nginxa, ale zróbmy to później, teraz nie jest to ważne).

Najważniejszym dla nas folderem jest app/. Znajdziemy tu plik Bootstrap.php, który zawiera klasę służącą do załadowania całego frameworka i skonfigurowania aplikacji. Tutaj włącza się autoloading, ustawia się debuggertrasy.

Czyszczenie

Web Project zawiera splash page, który usuwamy zanim zaczniemy cokolwiek programować. Nie krępuj się więc zastąpić zawartości strony app/UI/Home/default.latte słowami “Hello world!”.

Tracy (debugger)

Niezwykle ważnym narzędziem programistycznym jest debugger Tracy. Spróbuj wywołać błąd w app/UI/Home/HomePresenter.php (np. Usuwając nawias w definicji klasy HomePresenter) i zobacz, co się stanie. Pojawi się strona z powiadomieniem, która wyraźnie opisuje błąd.

debugger screen

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

Oczywiście w trybie produkcyjnym Tracy jest wyłączona i nie wyświetla żadnych wrażliwych informacji. W tym przypadku wszystkie błędy są przechowywane w folderze log/ Spróbujmy. W pliku app/Bootstrap.php odkomentuj następującą linię i zmień parametr wywołania na false, tak aby kod wyglądał jak poniżej:

...
$configurator->setDebugMode(false);
$configurator->enableTracy($rootDir . '/log');
...

Po odświeżeniu strony nie zobaczymy już Tracy. Zamiast tego pojawi się przyjazny dla użytkownika komunikat:

error screen

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

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

Możemy naprawić stworzony przez nas błąd i kontynuować pisanie aplikacji.

Wyślij podziękowania

Pokażemy Ci sztuczkę, która pozwoli Ci zadowolić autorów open source. Prosty sposób na rozgwiazdkowanie bibliotek, z których korzysta twój projekt na GitHubie. Po prostu zacznij:

composer thanks

Spróbuj!