40 lines
1.4 KiB
PHP

<?php
/*
Usmerjevalnik (router) skrbi za obravnavo HTTP zahtev. Glede na zahtevo,
pokliče ustrezno akcijo v zahtevanem controllerju.
*/
// Funkcija, ki kliče kontrolerje in hkrati vključuje njihovo kodo in kodo modela
function call($controller, $action)
{
// Vključimo kodo controllerja in modela (pazimo na poimenovanje datotek)
require_once('controllers/' . $controller . '_controller.php');
require_once('models/' . $controller . '.php');
// Ustvarimo kontroler
$o = $controller . "_controller"; //generiramo ime razreda controllerja
$controller = new $o; //ustvarimo instanco razreda (ime razreda je string spremenljivka)
//pokličemo akcijo na kontrolerju (ime funkcije je string spremenljivka)
$controller->{$action}();
}
// Seznam vseh dovoljenih controllerjev in njihovih akcij. Z njegovo pomočjo bi
// lahko definirali tudi pravice (ustrezno zmanjšali nabor akcij pod določenimi pogoji)
$controllers = array(
'pages' => ['error', 'api', 'login', 'register', 'logout'],
'ads' => ['index', 'show', 'create', 'store', 'edit', 'update', 'delete', 'addImg']
);
// Preverimo, če zahteva kliče controller in akcijo iz zgornjega seznama
if (
array_key_exists($controller, $controllers)
&& in_array($action, $controllers[$controller])
) {
// Pokličemo akcijo
call($controller, $action);
} else {
// Izpišemo stran z napako
call('pages', 'error');
}