Οδηγός PHP - Αντικειμενοστραφής προγραμματισμός: Θεμέλια & Πράξη

Ρουτίνα στην αντικειμενοστραφή PHP-ιστοσελίδα-προγραμματισμός

Όλα τα βίντεο του μαθήματος Οδηγός PHP - Αντικειμενοστραφής προγραμματισμός: Θεμέλια & Πράξη

Είσαι αντιμέτωπος με την πρόκληση να Routing σε μία αντικειμενοστραφή PHP εφαρμογή ανάλογα με την αναπαράσταση; Το Routing είναι ένα κεντρικό κομμάτι κάθε Webanwendung, καθώς αποφασίζει πώς οι εισερχόμενες URLs θα αντιστοιχούν στα κατάλληλα λογικά μπλοκ, δηλαδή στους ελεγκτές και τις αντίστοιχες ενέργειές τους. Αυτός ο οδηγός θα σε βοηθήσει να κατανοήσεις και να υλοποιήσεις τη διαδικασία του Routing σε PHP, περνώντας αναλυτικά από την αντιστοίχιση ελεγκτών και ενεργειών.

Κύριες πληροφορίες

  • Το Routing επιτρέπει την αντιστοίχιση των εισερχόμενων URL αιτημάτων σε συγκεκριμένες μεθόδους ελεγκτών.
  • Η ονοματολογία των ελεγκτών και των μεθόδων ακολουθεί συγκεκριμένες συμβάσεις ονομασίας για να εξασφαλίσει συνέπεια.
  • Με τη χρήση PHP Reflection μπορείς να ελέγξεις αν η συγκεκριμένη μέθοδος του ελεγκτή υπάρχει πριν την καλέσεις.
  • Οι παράμετροι πρέπει να επεξεργάζονται προσεκτικά και να μεταβιβάζονται στις αντίστοιχες μεθόδους μέσα σε έναν συσχετισμένο πίνακα.

Οδηγός βήμα-βήμα

Βήμα 1: Δημιουργία δομής καταλόγου και namespace

Πρώτα θα δημιουργήσεις έναν νέο κατάλογο με όνομα Controller, στον οποίο θα αποθηκεύσεις τις κλάσεις των ελεγκτών σου. Είναι σημαντικό να οργανώσεις τις κλάσεις σε λογικά namespaces. Για παράδειγμα:

Routing στην αντικειμενοστραφή προγραμματισμό PHP-Web

Στη συνέχεια, καθόρισε το namespace για τον ελεγκτή. Αυτό θα μπορούσε να μοιάζει ως εξής:

namespace Controller;

Βήμα 2: Ορισμός κλάσης ελεγκτή

Σε αυτό το βήμα θα δημιουργήσεις μια κλάση για τον επιθυμητό σου ελεγκτή. Ας τον ονομάσουμε UploadController. Για αυτό θα χρειαστείς μερικές βασικές ρυθμίσεις για να αρχικοποιήσεις την κλάση. Για παράδειγμα:

Δρομολόγηση στην αντικειμενοστραφή προγραμματισμό PHP-ιστού

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

Βήμα 3: Δημιουργία στιγμιότυπου του ελεγκτή

Τώρα δημιουργείς ένα στιγμιότυπο του ελεγκτή σου. Αυτό γίνεται τυπικά μέσω μιας μορφοποίησης string που περιλαμβάνει το πλήρες όνομα της κλάσης – συμπεριλαμβανομένου του namespace. Για παράδειγμα:

Routing στην αντικειμενοστραφή προγραμματισμένη PHP κίνηση ιστού

Για να μπορεί να υλοποιηθεί εύκολα περαιτέρω λογική, έλεγξε αν η κλάση υπάρχει πριν προχωρήσεις σε άλλα βήματα. Αυτό θα το κάνεις χρησιμοποιώντας μια απλή if-έκφραση που επιβεβαιώνει την ύπαρξη της κλάσης.

Βήμα 4: Διαχείριση εξαιρέσεων για μη υπάρχοντες ελεγκτές

Εάν ο ελεγκτής δεν υπάρχει, είναι συνετό να προκαλέσεις μια εξαίρεση. Χρησιμοποποίησε σε αυτή την περίπτωση την InvalidArgumentException για να δίνεις στον χρήστη μια σαφή ανατροφοδότηση ότι ο καθορισμένος ελεγκτής είναι άγνωστος:

Routing στην αντικειμενοστραφή προγραμματισμό ιστού PHP

Εδώ μπορείς να εκτυπώσεις μια προειδοποίηση όπως:

Άγνωστος ελεγκτής: [Όνομα Ελεγκτή]

Βήμα 5: Κοινές παράμετροι για τη δράση του ελεγκτή

Στο επόμενο βήμα, καλείται να καθορίσεις τις ενέργειες και τις μεθόδους τους για τον ελεγκτή. Σε αυτό το παράδειγμα καθορίζουμε ότι υπάρχει μια μέθοδος με όνομα save που είναι υπεύθυνη για την αποστολή. Σε αυτή την περίπτωση αναθέτεις στην PHP να ενσωματώσει αυτή τη μέθοδο στον ελεγκτή. Αυτό γίνεται μέσω μιας μορφοποίησης string, παρόμοια με τους ελεγκτές:

Δρομολόγηση στην αντικειμενοστραφή PHP-ιστοσελίδα-προγραμματισμού

Έτσι διασφαλίζεις ότι οι εξωτερικές κλήσεις γίνονται αποδεκτές μόνο από εξουσιοδοτημένες μεθόδους δράσης.

Βήμα 6: Επαλήθευση της δράσης μέσω Reflection

Για να διασφαλίσεις ότι η καθορισμένη μέθοδος υπάρχει, τώρα χρησιμοποιείται η Reflection της PHP. Αυτό γίνεται μέσω της στιγμιοποίησης της ReflectionClass.

Δρομολόγηση στην αντικειμενοστραφή προγραμματισμό ιστού PHP

Εδώ ελέγχεις με τη μέθοδο hasMethod αν η επιθυμητή δράση υπάρχει πράγματι στον ελεγκτή σου:

$reflection = new ReflectionClass($controllerClass);
if (!$reflection->hasMethod($actionName)) { throw new Exception("Η δράση '$actionName' δεν υπάρχει στον ελεγκτή");
}

Βήμα 7: Υλοποίηση λογικής πρόσβασης παραμέτρων

Αφού έχουν καθοριστεί οι ελεγκτές και η δράση, είναι καιρός να επεξεργαστείς τις εισερχόμενες παραμέτρους. Αυτές οι παράμετροι εμφανίζονται τυπικά με τη μορφή ενός τμήματος URL και πρέπει να διαχωριστούν σε ζεύγη. Για αυτό, χρησιμοποιείς την συνάρτηση explode():

Δρομολόγηση στην αντικειμενοστραφή προγραμματισμό ιστού PHP

Σε αυτό το βήμα πρέπει επίσης να διασφαλίσεις ότι ο αριθμός των παραμέτρων είναι ζυγός. Αν αυτό δεν ισχύει, υπάρχει άκυρος αριθμός παραμέτρων – και πάλι συνιστάται η InvalidArgumentException:

if (count($parameters) % 2!= 0) { throw new InvalidArgumentException("Άκυρος αριθμός παραμέτρων");
}

Βήμα 8: Δημιουργία ενός συσχετισμένου πίνακα για τις παραμέτρους

Στο επόμενο βήμα θα μετατρέψεις τις παραμέτρους σε έναν συσχετισμένο πίνακα, ώστε να μπορείς εύκολα να τις μεταβιβάσεις στη δράση. Αυτό μπορεί να γίνει μέσω ενός βρόχου που μπορεί να αντιστοιχεί σε κάθε ζεύγος καθαρού-τιμής:

Routing στην αντικειμενοστραφή προγραμματισμό PHP-Web

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

Βήμα 9: Κλήση της δράσης του ελεγκτή

Τώρα γίνεται πρακτικό: Είσαι έτοιμος να καλέσεις τη μέθοδο του ελεγκτή σου με τις αντίστοιχες παραμέτρους που έχεις καθορίσει νωρίτερα. Για αυτό, στιγμιοποιείς τον ελεγκτή και καλείς τη μέθοδο ως εξής:

$controllerInstance = new $controllerClass();
$controllerInstance->$actionMethod($paramsArray);
Δρομολόγηση στην αντικειμενοστραφή προγραμματισμό ιστού PHP

Βεβαιώσου ότι στο τέλος έχουν εκτελεστεί σωστά όλα τα απαραίτητα βήματα. Έχεις τώρα με επιτυχία εφαρμόσει το Routing στην PHP εφαρμογή σου.

Σύνοψη

Σε αυτόν τον γραπτό οδηγό έμαθες πώς να υλοποιήσεις το Routing μέσω των ελεγκτών και των δράσεων σε μια αντικειμενοστραφή PHP εφαρμογή. Ξεκινώντας από τη δομή του καταλόγου, μέσω της ορισμού και επαλήθευσης των ελεγκτών και των μεθόδων τους έως την επεξεργασία παραμέτρων – όλα αυτά σου επιτρέπουν να έχεις ένα ισχυρό σύστημα Routing για την εφαρμογή σου.

Συχνές Ερωτήσεις

Πώς να υλοποιήσω το Routing σε PHP;Το Routing οργανώνεται μέσω της αντιστοίχισης URLs σε ελεγκτές και τις μεθόδους δράσης τους.

Τι είναι οι ελεγκτές στην PHP;Οι ελεγκτές είναι κλάσεις που ελέγχουν τη λογική για την επεξεργασία αιτημάτων και καλούν τις αντίστοιχες μεθόδους δράσης.

Πώς μπορώ να διασφαλίσω ότι υπάρχει μια μέθοδος δράσης;Χρησιμοποίησε την PHP Reflection για να ελέγξεις αν η μέθοδος υπάρχει στην αντίστοιχη κλάση ελεγκτή.

Πώς επεξεργάζομαι παραμέτρους URL;Οι παράμετροι πρέπει να εμφανίζονται σε ζυγά ζεύγη και μπορούν να μετατραπούν σε έναν συσχετισμένο πίνακα μέσω της συνάρτησης explode().

Τι συμβαίνει αν ο ελεγκτής μου δεν υπάρχει;Θα πρέπει να ρίξεις μια αντίστοιχη εξαίρεση για να δείξεις ότι ο ελεγκτής είναι άγνωστος.