ntinue;
}
// Знаходимо файл
if (is_file ($ fullpath. '. php')) {
$ controller = $ part;
array_shift ($ parts);
break;
}
}
if (empty ($ controller)) {$ controller = 'index';};
// Отримуємо дію
$ action = array_shift ($ parts);
if (empty ($ action)) {$ action = 'index';}
$ file = $ cmd_path. $ Controller. '. Php';
$ args = $ parts;
} delegate () {
// Аналізуємо шлях
/**
* @ var string $ file
*/
$ file = $ controller = $ action = $ args ='';
$ this-> getController ($ file, $ controller, $ action, $ args);
// Файл доступний?
if (is_readable ($ file) == false) {
die ('404 Not Found ');
}
// Підключаємо файл
include ($ file);
// Створюємо примірник контролера
$ class = 'Controller_'. $ Controller;
$ controller = new $ class ($ this-> registry);
// Дія доступна?
if (is_callable (array ($ controller, $ action)) == false) {
die ('404 Not Found ');
}
// Виконуємо дію
$ controller-> args = $ args;
$ controller-> $ action ();
}
}
?>
Клас Registry:
phpRegistry implements ArrayAccess, Iterator
{$ vars = array ();
/**
* @ var Registry
*/static $ _instance; function __ construct () {
}
/**
* Повертає екземпляр класу
*
* @ return Registry
*/
public static function getInstance ()
{
if (! self :: $ _instance) {
self :: $ _instance = new self;
}
return self :: $ _instance;
} set ($ key, $ var) {
/* if (isset ($ this-> vars [$ key]) == true) {new Exception ('Unable to set var `'. $ key. '`. Already set. ');
} */