Werken met routes in je eigen MVC-framework
Je weet al dat in het bestand /project/config/routes.php
routes staan die de overeenkomsten aangeven
tussen URL's en controllers met acties. Routes
zijn objecten van de klasse Route.
Laten we deze klasse maken in het bestand
/core/Route.php:
<?php
namespace Core;
class Route
{
private $path;
private $controller;
private $action;
public function __construct($path, $controller, $action)
{
$this->path = $path;
$this->controller = $controller;
$this->action = $action;
}
public function __get($property)
{
return $this->$property;
}
}
?>
Zoals je ziet, zijn de eigenschappen in deze klasse alleen bedoeld voor lezen, wat bereikt wordt door gebruik van magie.
Bekijk nu het bestand met routes. Je kunt
zien dat daar een array staat die
teruggegeven wordt via return.
Dit betekent dat als je zo'n bestand includeert via require,
je het resultaat van de inclusie kunt opslaan in een
variabele en in die variabele zal onze
array staan:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jouw implementatie van autoload
});
// Lezen de array uit het bestand met routes in een variabele:
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
?>
Kopieer de code van mijn klasse Route
en plaats het in het bestand
/core/Route.php.
Verkrijg de array met routes in het bestand index.php.