Написал маршрутизатор для сайта, но меня посещают сомнения в том что я сделал все правильно. Хотелось чтобы он был настолько простым на сколько это возможно, гибким и по возможности без дыр в безопасности.
router.php
$request = explode('/', str_replace(dirname($_SERVER['PHP_SELF'])."/","",$_SERVER['REQUEST_URI']));
$request = array_diff($request, array(''));
$model=array_shift($request);
if ($model){
function __autoload($class)
{
@include ('models/'.$class.'.php');
if (!class_exists($class, false)) {
include ('error.php');
error::num_404($class);
}
}
if (class_exists($model)) { $model::run($request); }
}
else {
include ('main.php');
}
Маршрутизатор просто проинклюдирован к index.php, mod_rewrite в свою очередь включен и все переадресует на index.php.
RewriteEngine On
RewriteRule .* index.php [L]
Но глядя на него меня посещают следующие вопросы:
1. Возможно маршрутизатор должен быть классом или с таким функционалом можно использовать как есть?
2. Стоит ли использовать __autoload в маршрутизаторе?
3. Да и вообще что я делаю не так?
З.Ы.: Заранее благодарен за конструктивную критику и советы по улучшению.