Napišimo prvo aplikacijo!

Spoznajmo skupaj Nette Framework, medtem ko ustvarjamo preprost blog s komentarji. Gremo!

Že po prvih dveh poglavjih bomo imeli svoj lasten delujoč blog in bomo lahko objavljali svoje odlične prispevke, čeprav bodo funkcije zaenkrat precej omejene. Prebrati bi morali tudi naslednja poglavja, kjer bomo programirali dodajanje komentarjev, urejanje člankov in na koncu blog zavarovali.

Ta vadnica predpostavlja, da ste prebrali stran Namestitev in uspešno pripravili potrebna orodja. Prav tako predpostavlja, da razumete objektno usmerjeno programiranje v PHP.

Prosimo, uporabljajte PHP 8.1 ali novejšo različico. Celotno aplikacijo najdete na GitHubu.

Pozdravna stran

Začnimo z ustvarjanjem novega projekta v imenik nette-blog:

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

V tem trenutku bi morala že delovati uvodna stran Web Projecta. Preizkusimo to z odprtjem brskalnika na naslednjem URL naslovu:

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

in videli bomo uvodno stran Nette Frameworka:

Aplikacija deluje in lahko začnete delati spremembe.

Če je prišlo do težave, poskusite teh nekaj nasvetov.

Vsebina Web Projecta

Web Project ima naslednjo strukturo:

nette-blog/
├── app/              ← imenik z aplikacijo
│   ├── Core/         ← osnovni razredi, potrebni za delovanje
│   ├── Presentation/ ← presenterji, predloge & co.
│   │   └── Home/     ← imenik presenterja Home
│   └── Bootstrap.php ← zagonski razred Bootstrap
├── bin/              ← skripte, ki se zaganjajo iz ukazne vrstice
├── config/           ← konfiguracijske datoteke
├── log/              ← beleženje napak
├── temp/             ← začasne datoteke, predpomnilnik, …
├── vendor/           ← knjižnice, nameščene s Composerjem
│   └── autoload.php  ← samodejno nalaganje vseh nameščenih paketov
└── www/              ← javni imenik - edini dostopen iz brskalnika
    └── index.php     ← začetna datoteka, s katero se aplikacija zažene

Imenik www/ je namenjen shranjevanju slik, JavaScript datotek, CSS stilov in drugih javno dostopnih datotek. Samo ta imenik je dostopen z interneta, zato nastavite korenski imenik vaše aplikacije tako, da kaže prav sem (to lahko nastavite v konfiguraciji Apache ali nginx, ampak naredimo to kasneje, zdaj to ni pomembno).

Najpomembnejša mapa za nas je app/. Tu najdemo datoteko Bootstrap.php, v kateri je razred, ki služi za nalaganje celotnega ogrodja in nastavitev aplikacije. Tu se aktivira samodejno nalaganje, nastavi se razhroščevalnik in poti.

Čiščenje

Web Project vsebuje uvodno stran, ki jo bomo izbrisali, preden začnemo karkoli programirati. Brez skrbi torej zamenjamo vsebino datoteke app/Presentation/Home/default.latte z “Hello world!”.

Tracy (razhroščevalnik)

Izjemno pomembno orodje za razvoj je razhroščevalno orodje Tracy. Poskusite povzročiti kakšno napako v datoteki app/Presentation/Home/HomePresenter.php (npr. z odstranitvijo zavitega oklepaja v definiciji razreda HomePresenter) in poglejte, kaj se zgodi. Pojavi se obvestilna stran, ki napako razumljivo opisuje.

zaslon razhroščevalnika

Tracy nam bo izjemno pomagal, ko bomo iskali napake v aplikaciji. Prav tako opazite plavajočo Tracy vrstico v desnem spodnjem kotu zaslona, ki vsebuje informacije iz izvajanja aplikacije.

V produkcijskem načinu je Tracy seveda izklopljena in ne prikazuje nobenih občutljivih informacij. Vse napake so v tem primeru shranjene v mapi log/. Poskusimo to. V datoteki app/Bootstrap.php odkomentiramo naslednjo vrstico in spremenimo parameter klica na false, da koda izgleda takole:

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

Po osvežitvi strani Tracyja ne bomo več videli. Namesto njega se prikaže uporabniku prijazno sporočilo:

zaslon napake

Zdaj poglejmo v imenik log/. Tu (v datoteki exception.log) najdemo zabeleženo napako in tudi že znano stran s sporočilom o napaki (shranjeno kot HTML datoteka z imenom, ki se začne z exception-).

Ponovno zakomentiramo vrstico // $configurator->setDebugMode(false);. Tracy samodejno omogoči razvojni način na localhostu in ga onemogoči povsod drugje.

Napako, ki smo jo ustvarili, lahko popravimo in nadaljujemo s pisanjem aplikacije.

Pošljite zahvalo

Pokazali vam bomo trik, s katerim boste razveselili avtorje odprtokodnih projektov. Na preprost način boste na GitHubu dali zvezdico knjižnicam, ki jih vaš projekt uporablja. Samo zaženite:

composer thanks

Poskusite!