Возможный дубликат:
Маршрутизация CMS в MVC
Я хочу реализовать структуру дизайна MVC и в настоящее время бороться с хорошим решением для анализа запрашиваемых представлений.
В моем файле маршрутизации у меня есть следующий код:
public function parseRequestedView() { $this->ressource_requested = explode('/', trim($_GET['view'], '/')); // eg: http://www.foo.com/article/{id}/comments/show if (!empty($this->ressource_requested[3])) { // Format: [0] viewpoint (article), [1] child (comments), [2] action (show), [3] reference ({id}), // [4] additional information (from $_POST) return array($this->ressource_requested[0], $this->ressource_requested[2], $this->ressource_requested[3], $this->ressource_requested[1], $_POST); // eg: http://www.foo.com/article/{id}/show } elseif (!empty($this->ressource_requested[2])) { return array($this->ressource_requested[0], NULL, $this->ressource_requested[2], $this->ressource_requested[1], $_POST); // eg: http://www.foo.com/archive/show } else { return array($this->ressource_requested[0], NULL, $this->ressource_requested[1], NULL, NULL); } }
Идея заключается в том, что независимо от того, что посетитель вводит в браузер, функция анализирует запрос и всегда возвращает тот же форматированный массив / вывод. Первый сегмент URL-адреса, следующий за именем хоста, всегда является главной точкой обзора (например: статья). В конце я включаю представление через другую функцию, называемую includeTemplateFile (). У файлов есть это соглашение об именах:
viewpoint.child.action.template.php eg: article.comments.show.template.php
Мой вопрос сейчас: есть ли более элегантное решение? Я прочитал некоторые из турникенов / статей (например: http://johnsquibb.com/tutorials/mvc-framework-in-1-hour-part-one ) по этой теме, но мне не нравятся большинство решений, поскольку они не являются хорошо спроектирован.
Вот содержимое файла .htaccess:
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?view=$1 [L,QSA]
Заранее спасибо.