Приветствую, all!
Озадачился собрать все подходы, с помощью которых в различных CMS и фремворках, осуществляется разбор урла и определение, какому контроллеру срабатывать.
Навскидку вспоминаются:
0) структура папок — создается нужная структура и в каждый каталог помещается нужный контроллер
1) с реврайтом, использование регулярок статично в коде:
$Router->addRoute("/news/[0-9]+", function($params){ /* */ });
2) то же самое, что и п.1. но загрузка регулярок и имен контроллеров из базы
3) выборка имени контроллера из базы по точному соответствию
$ctrlName = $DB->selectCell("SELECT `ctrlName` FROM `Pages` WHERE `URL` LIKE ?", $_SERVER['REQUEST_URI']);
4) то же самое но с использованием GET-параметра
$ctrlName = $DB->selectCell("SELECT `ctrlName` FROM `Pages` WHERE `ID`=?d", $_GET['page_id']);
5) разбор урла на части в массив
/pages/news/all/1/ => array('pages', 'news', 'all', '1')
и выборка из базы этого пути, то есть нечто
$Pages = $DB->select("SELECT * FROM `Pages` WHERE `URL` IN (?a)", array('pages', 'news', 'all', '1'));
c проверкой иерархии
Подскажите ещё?