Írjuk meg az első alkalmazást!

Ismerkedjünk meg együtt a Nette Frameworkkel, miközben létrehozunk egy egyszerű blogot hozzászólásokkal. Vágjunk bele!

Már az első két fejezet után lesz egy saját működő blogunk, és publikálhatjuk nagyszerű bejegyzéseinket, bár a funkciók egyelőre meglehetősen korlátozottak lesznek. Érdemes elolvasni a következő fejezeteket is, ahol beprogramozzuk a hozzászólások hozzáadását, a cikkek szerkesztését, és végül biztonságossá tesszük a blogot.

Ez az útmutató feltételezi, hogy elolvasta a Telepítés oldalt, és sikeresen előkészítette a szükséges eszközöket. Feltételezi továbbá, hogy érti az objektumorientált programozást PHP-ban.

Kérjük, használjon PHP 8.1-et vagy újabbat. A teljes alkalmazást megtalálja a GitHubon.

Üdvözlő oldal

Kezdjük egy új projekt létrehozásával a nette-blog könyvtárba:

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

Ebben a pillanatban a Web Project bevezető oldalának már működnie kellene. Próbáljuk ki a böngésző megnyitásával a következő URL címen:

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

és látni fogjuk a Nette Framework bevezető oldalát:

Az alkalmazás működik, és elkezdheti a módosításokat.

Ha probléma merült fel, próbálja ki ezeket a tippeket.

A Web Project tartalma

A Web Project a következő struktúrával rendelkezik:

nette-blog/
├── app/              ← alkalmazás könyvtára
│   ├── Core/         ← működéshez szükséges alaposztályok
│   ├── Presentation/ ← presenterek, sablonok & társai
│   │   └── Home/     ← Home presenter könyvtára
│   └── Bootstrap.php ← Bootstrap indító osztály
├── bin/              ← parancssorból futtatott szkriptek
├── config/           ← konfigurációs fájlok
├── log/              ← hibák naplózása
├── temp/             ← ideiglenes fájlok, cache, …
├── vendor/           ← Composerrel telepített könyvtárak
│   └── autoload.php  ← az összes telepített csomag autoloadingja
└── www/              ← nyilvános könyvtár - az egyetlen elérhető a böngészőből
    └── index.php     ← kezdőfájl, amellyel az alkalmazás elindul

A www/ könyvtár képek, JavaScript fájlok, CSS stílusok és más nyilvánosan elérhető fájlok tárolására szolgál. Csak ez a könyvtár érhető el az internetről, ezért állítsa be az alkalmazás gyökérkönyvtárát úgy, hogy ide mutasson (ezt beállíthatja az Apache vagy nginx konfigurációjában, de tegyük ezt később, most nem fontos).

A legfontosabb mappa számunkra az app/. Itt találjuk a Bootstrap.php fájlt, amelyben egy osztály található, amely a teljes keretrendszer betöltésére és az alkalmazás beállítására szolgál. Itt aktiválódik az autoloading, beállítódik a debugger és az útvonalak.

Takarítás

A Web Project tartalmaz egy bevezető oldalt, amelyet törlünk, mielőtt bármit is programozni kezdenénk. Nyugodtan cseréljük le tehát az app/Presentation/Home/default.latte fájl tartalmát “Hello world!”-re.

Tracy (debugger)

Rendkívül fontos eszköz a fejlesztéshez a Tracy hibakereső eszköz. Próbáljon meg valamilyen hibát előidézni az app/Presentation/Home/HomePresenter.php fájlban (pl. a HomePresenter osztály definíciójában lévő kapcsos zárójel eltávolításával), és nézze meg, mi történik. Felugrik egy értesítő oldal, amely érthetően leírja a hibát.

hibakereső képernyő

A Tracy óriási segítséget nyújt, amikor hibákat keresünk az alkalmazásban. Figyelje meg a képernyő jobb alsó sarkában lebegő Tracy Bart is, amely információkat tartalmaz az alkalmazás futásáról.

Éles (produkciós) módban a Tracy természetesen ki van kapcsolva, és nem jelenít meg semmilyen érzékeny információt. Ebben az esetben minden hiba a log/ mappába kerül mentésre. Próbáljuk ki. Az app/Bootstrap.php fájlban vegyük ki a kommentet a következő sorból, és változtassuk meg a hívás paraméterét false-ra, hogy a kód így nézzen ki:

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

Az oldal frissítése után már nem látjuk a Tracy-t. Helyette egy felhasználóbarát üzenet jelenik meg:

hiba képernyő

Most nézzünk bele a log/ könyvtárba. Itt (az exception.log fájlban) megtaláljuk a naplózott hibát, valamint a már ismert hibaüzenetet tartalmazó oldalt (HTML fájlként mentve, amelynek neve exception--nel kezdődik).

Kommenteljük vissza a // $configurator->setDebugMode(false); sort. A Tracy automatikusan engedélyezi a fejlesztői módot a localhoston, és letiltja mindenhol máshol.

A létrehozott hibát kijavíthatjuk, és folytathatjuk az alkalmazás írását.

Küldjön köszönetet

Mutatunk egy trükköt, amellyel örömet szerezhet az open source szerzőknek. Egyszerű módon adhat csillagot a GitHubon azoknak a könyvtáraknak, amelyeket a projektje használ. Csak futtassa:

composer thanks

Próbálja ki!