Υλοποίηση δρομολογητή στο δικό σας MVC framework
Ας γράψουμε τώρα το πρότυπο της κλάσης Router
σύμφωνα με τις κλήσεις μας:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// εδώ θα είναι ο κώδικας
}
}
?>
Στη μέθοδο getTrack πρέπει να καθορίσουμε
ποια διαδρομή αντιστοιχεί σε αυτό το $uri.
Για αυτό, πρέπει να διατρέξουμε τον πίνακα με τις διαδρομές μας
με έναν βρόχο:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// έλεγχος $uri και $route
}
}
}
?>
Εάν κάποια διαδρομή αντιστοιχεί στο URI,
πρέπει να λάβουμε από αυτό το URI τις τιμές των παραμέτρων
της διαδρομής και να επιστρέψουμε ένα αντικείμενο της κλάσης Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (έλεγχος αντιστοιχίας διαδρομής και URI) {
$params = ; // πρέπει να ληφθούν παράμετροι από το uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // εάν καμία διαδρομή δεν ταιριάζει
}
}
?>
Αντιγράψτε το πρότυπο της κλάσης Router
και τοποθετήστε το στο αρχείο /core/Router.php.
Υλοποιήστε την περιγραφόμενη κλάση Router,
η οποία να επιστρέφει ως αποτέλεσμα ένα αντικείμενο της κλάσης
Track. Εάν αντιμετωπίσετε δυσκολίες
(κάτι που είναι πολύ πιθανό), κοιτάξτε στον πηγαίο
κώδικα του framework με το οποίο μελετήσατε τη χρήση
του MVC. Εκεί, στην κλάση Router θα βρείτε
το missing μέρος της υλοποίησης και τα σχόλιά μου
για αυτήν.