Γράφοντας την πρώτη σας εφαρμογή!

Ας γνωρίσουμε μαζί το Nette Framework, δημιουργώντας ένα απλό blog με σχόλια. Πάμε!

Ήδη μετά τα δύο πρώτα κεφάλαια, θα έχουμε το δικό μας λειτουργικό blog και θα μπορούμε να δημοσιεύσουμε τα υπέροχα άρθρα μας, αν και οι λειτουργίες θα είναι ακόμα σε μεγάλο βαθμό περιορισμένες. Θα πρέπει να διαβάσετε και τα επόμενα κεφάλαια, όπου θα προγραμματίσουμε την προσθήκη σχολίων, την επεξεργασία άρθρων και τέλος θα ασφαλίσουμε το blog.

Αυτός ο οδηγός προϋποθέτει ότι έχετε διαβάσει τη σελίδα Εγκατάσταση και έχετε προετοιμάσει επιτυχώς τα απαραίτητα εργαλεία. Επίσης προϋποθέτει ότι κατανοείτε τον αντικειμενοστραφή προγραμματισμό στην PHP.

Χρησιμοποιήστε παρακαλώ PHP 8.1 ή νεότερη. Μπορείτε να βρείτε την πλήρη εφαρμογή στο GitHub.

Σελίδα καλωσορίσματος

Ας ξεκινήσουμε δημιουργώντας ένα νέο έργο στον κατάλογο nette-blog:

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

Αυτή τη στιγμή, η αρχική σελίδα του Web Project θα πρέπει ήδη να λειτουργεί. Θα το δοκιμάσουμε ανοίγοντας τον περιηγητή στην ακόλουθη διεύθυνση URL:

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

και θα δούμε την αρχική σελίδα του Nette Framework:

Η εφαρμογή λειτουργεί και μπορείτε να ξεκινήσετε να κάνετε τροποποιήσεις.

Αν παρουσιάστηκε πρόβλημα, δοκιμάστε αυτές τις λίγες συμβουλές.

Περιεχόμενο του Web Project

Το Web Project έχει την ακόλουθη δομή:

nette-blog/
├── app/              ← κατάλογος εφαρμογής
│   ├── Core/         ← βασικές κλάσεις απαραίτητες για τη λειτουργία
│   ├── Presentation/ ← presenters, templates & λοιπά
│   │   └── Home/     ← κατάλογος του presenter Home
│   └── Bootstrap.php ← κλάση εκκίνησης Bootstrap
├── bin/              ← scripts που εκτελούνται από τη γραμμή εντολών
├── config/           ← αρχεία διαμόρφωσης
├── log/              ← καταγραφή σφαλμάτων
├── temp/             ← προσωρινά αρχεία, cache, …
├── vendor/           ← βιβλιοθήκες που εγκαταστάθηκαν από τον Composer
│   └── autoload.php  ← autoloading όλων των εγκατεστημένων πακέτων
└── www/              ← δημόσιος κατάλογος - ο μόνος προσβάσιμος από τον περιηγητή
    └── index.php     ← αρχικό αρχείο με το οποίο ξεκινά η εφαρμογή

Ο κατάλογος www/ προορίζεται για την αποθήκευση εικόνων, αρχείων JavaScript, στυλ CSS και άλλων δημόσια προσβάσιμων αρχείων. Μόνο αυτός ο κατάλογος είναι προσβάσιμος από το διαδίκτυο, οπότε ορίστε τον ριζικό κατάλογο της εφαρμογής σας ώστε να δείχνει ακριβώς εδώ (αυτό μπορείτε να το ορίσετε στη διαμόρφωση του Apache ή του nginx, αλλά ας το κάνουμε αργότερα, τώρα δεν είναι σημαντικό).

Ο πιο σημαντικός φάκελος για εμάς είναι ο app/. Εδώ βρίσκουμε το αρχείο Bootstrap.php, στο οποίο υπάρχει η κλάση που χρησιμεύει για τη φόρτωση ολόκληρου του framework και τη ρύθμιση της εφαρμογής. Εδώ ενεργοποιείται το autoloading, ρυθμίζεται ο debugger και οι routes.

Καθαρισμός

Το Web Project περιέχει μια αρχική σελίδα, την οποία θα διαγράψουμε πριν αρχίσουμε να προγραμματίζουμε οτιδήποτε. Χωρίς ανησυχία, λοιπόν, αντικαθιστούμε το περιεχόμενο του αρχείου app/Presentation/Home/default.latte με “Hello world!”.

Tracy (debugger)

Ένα εξαιρετικά σημαντικό εργαλείο για την ανάπτυξη είναι το εργαλείο debugging Tracy. Δοκιμάστε να προκαλέσετε κάποιο σφάλμα στο αρχείο app/Presentation/Home/HomePresenter.php (π.χ. αφαιρώντας ένα άγκιστρο στον ορισμό της κλάσης HomePresenter) και δείτε τι θα συμβεί. Θα εμφανιστεί μια σελίδα ειδοποίησης που περιγράφει το σφάλμα με κατανοητό τρόπο.

οθόνη debugger

Το Tracy θα μας βοηθήσει πάρα πολύ όταν θα ψάχνουμε για σφάλματα στην εφαρμογή. Επίσης, παρατηρήστε το αιωρούμενο Tracy Bar στην κάτω δεξιά γωνία της οθόνης, το οποίο περιέχει πληροφορίες από την εκτέλεση της εφαρμογής.

Στην κατάσταση παραγωγής, το Tracy είναι φυσικά απενεργοποιημένο και δεν εμφανίζει καμία ευαίσθητη πληροφορία. Όλα τα σφάλματα σε αυτή την περίπτωση αποθηκεύονται στον φάκελο log/. Ας το δοκιμάσουμε. Στο αρχείο app/Bootstrap.php αποσχολιάζουμε την ακόλουθη γραμμή και αλλάζουμε την παράμετρο της κλήσης σε false, ώστε ο κώδικας να μοιάζει έτσι:

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

Μετά την ανανέωση της σελίδας, δεν θα δούμε πλέον το Tracy. Αντ' αυτού, θα εμφανιστεί ένα φιλικό προς το χρήστη μήνυμα:

οθόνη σφάλματος

Τώρα ας ρίξουμε μια ματιά στον κατάλογο log/. Εδώ (στο αρχείο exception.log) βρίσκουμε το καταγεγραμμένο σφάλμα και επίσης τη γνωστή σελίδα με το μήνυμα σφάλματος (αποθηκευμένη ως αρχείο HTML με όνομα που ξεκινά με exception-).

Θα σχολιάσουμε ξανά τη γραμμή // $configurator->setDebugMode(false);. Το Tracy ενεργοποιεί αυτόματα την κατάσταση ανάπτυξης στο localhost και την απενεργοποιεί παντού αλλού.

Μπορούμε να διορθώσουμε το σφάλμα που δημιουργήσαμε και να συνεχίσουμε το γράψιμο της εφαρμογής.

Στείλτε ευχαριστίες

Θα σας δείξουμε ένα κόλπο που θα ευχαριστήσει τους συγγραφείς open source. Με έναν απλό τρόπο, δίνετε ένα αστέρι στο GitHub στις βιβλιοθήκες που χρησιμοποιεί το έργο σας. Απλά εκτελέστε:

composer thanks

Δοκιμάστε το!