40 lines
1.4 KiB
PHP
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');
|
|
}
|