Scriem prima aplicație!

Să cunoaștem împreună Nette Framework, creând un blog simplu cu comentarii. Să începem!

Deja după primele două capitole vom avea propriul nostru blog funcțional și vom putea publica postările noastre grozave, deși funcțiile vor fi deocamdată destul de limitate. Ar trebui să citiți și capitolele următoare, unde vom programa adăugarea de comentarii, editarea articolelor și, în final, vom securiza blogul.

Acest ghid presupune că ați citit pagina Instalare și ați pregătit cu succes instrumentele necesare. De asemenea, presupune că înțelegeți programarea orientată pe obiecte în PHP.

Vă rugăm să utilizați PHP 8.1 sau o versiune mai nouă. Aplicația completă o găsiți pe GitHub.

Pagina de bun venit

Să începem prin crearea unui nou proiect în directorul nette-blog:

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

În acest moment, pagina de start a Web Project ar trebui să funcționeze deja. Vom testa acest lucru deschizând browserul la următoarea adresă URL:

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

și vom vedea pagina de start a Nette Framework:

Aplicația funcționează și puteți începe să faceți modificări.

Dacă a apărut o problemă, încercați aceste câteva sfaturi.

Conținutul Web Project

Web Project are următoarea structură:

nette-blog/
├── app/              ← directorul cu aplicația
│   ├── Core/         ← clase de bază necesare pentru funcționare
│   ├── Presentation/ ← presenteri, șabloane & co.
│   │   └── Home/     ← directorul presenterului Home
│   └── Bootstrap.php ← clasa de pornire Bootstrap
├── bin/              ← scripturi rulate din linia de comandă
├── config/           ← fișiere de configurare
├── log/              ← logarea erorilor
├── temp/             ← fișiere temporare, cache, …
├── vendor/           ← biblioteci instalate de Composer
│   └── autoload.php  ← autoloading pentru toate pachetele instalate
└── www/              ← directorul public - singurul accesibil din browser
    └── index.php     ← fișierul inițial prin care se lansează aplicația

Directorul www/ este destinat stocării imaginilor, fișierelor JavaScript, stilurilor CSS și altor fișiere accesibile public. Numai acest director este accesibil de pe internet, așa că setați directorul rădăcină al aplicației dvs. astfel încât să indice aici (puteți seta acest lucru în configurația Apache sau nginx, dar să facem asta mai târziu, acum nu este important).

Cel mai important folder pentru noi este app/. Aici găsim fișierul Bootstrap.php, în care se află clasa care servește la încărcarea întregului framework și la configurarea aplicației. Aici se activează autoloading-ul, se setează debugger-ul și rutele.

Curățenie

Web Project conține o pagină de start, pe care o vom șterge înainte de a începe să programăm ceva. Fără griji, deci, înlocuim conținutul fișierului app/Presentation/Home/default.latte cu “Hello world!”.

Tracy (debugger)

Un instrument extrem de important pentru dezvoltare este instrumentul de depanare Tracy. Încercați să provocați o eroare în fișierul app/Presentation/Home/HomePresenter.php (de exemplu, eliminând acolada din definiția clasei HomePresenter) și vedeți ce se întâmplă. Va apărea o pagină de notificare care descrie eroarea în mod clar.

ecran debugger

Tracy ne va ajuta enorm atunci când vom căuta erori în aplicație. De asemenea, observați bara Tracy plutitoare în colțul din dreapta jos al ecranului, care conține informații din timpul rulării aplicației.

În modul de producție, Tracy este, desigur, dezactivată și nu afișează nicio informație sensibilă. Toate erorile sunt în acest caz stocate în folderul log/. Să încercăm acest lucru. În fișierul app/Bootstrap.php, decomentăm următoarea linie și schimbăm parametrul apelului la false, astfel încât codul să arate astfel:

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

După reîmprospătarea paginii, nu vom mai vedea Tracy. În locul ei, se va afișa un mesaj prietenos pentru utilizator:

ecran eroare

Acum să ne uităm în directorul log/. Aici (în fișierul exception.log) vom găsi eroarea logată și, de asemenea, pagina deja cunoscută cu mesajul de eroare (stocată ca fișier HTML cu un nume care începe cu exception-).

Comentăm din nou linia // $configurator->setDebugMode(false);. Tracy activează automat modul de dezvoltare pe localhost și îl dezactivează peste tot altundeva.

Putem repara eroarea pe care am creat-o și continua să scriem aplicația.

Trimiteți mulțumiri

Vă vom arăta un truc care îi va încânta pe autorii open source. Puteți da cu ușurință o stea pe GitHub bibliotecilor pe care le utilizează proiectul dvs. Este suficient să rulați:

composer thanks

Încercați!