Запись основного PHP MVC, не уверенного, как запустить

Я работаю над персональным проектом, базирующимся в PHP и MySQL, и я провожу немного исследования и играю вокруг с, переписывает. Скажите, что у меня есть сайт...

http://www.myDomain.com/

И я хочу иметь index.php или начальную загрузку, в корне домена. Таким образом, если Вы получаете доступ...

http://www.myDomain.com/admin/

Это все еще загрузится от index.php на верхнем уровне домена, который обрабатывает парсинг и загрузку конфигурационных файлов и перенаправление пользователя к корректному местоположению, делая симпатичные ссылки по пути.

Где я должен запустить в своем исследовании и образовании на этом? Я в замешательстве несколько. Спасибо за Ваше время :)


Обновление:

Кажется, что я действительно хочу двинуть систему MVC с фронтальным контроллером. Любые хорошие ссылки при записи моей собственной платформы MVC (было бы очень простым). Я честно не хочу вытягивать в Платформе Зенда в это время (увеличил бы объем его много!)

5
задан Urda 4 March 2010 в 02:26
поделиться

2 ответа

По сути, вы перезаписываете любой входящий запрос в свой index.php . Вот пример .htaccess из структуры Kohana :

# Turn on URL rewriting
RewriteEngine On

# Protect application and system files from being viewed
# RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]

Таким образом, ваш пример будет перенаправлен на index.php / admin . Затем вы можете посмотреть $ _ SERVER ['REQUEST_URI'] , чтобы определить, что делать дальше.

Относительно распространенным шаблоном будет использование первого сегмента URI в качестве контроллера, а второго в качестве метода. Так, например:

$segments = explode($_SERVER['request_uri'], '/');//array('admin')

if(isset($segments[0]))
{
    $class = $segments[0].'_controller';//'admin_controller

    if(isset($segments[1]))
         $method = $segments[1];
    else
         $method = 'index';
}
else
{
    $class = 'index_controller';
    $method = 'index';
}

$controller = new $class;
$controller->$method();

Этот код ни в коем случае не готов к производству, так как он умрет огненной смертью, если, например, пользователь посетит URL-адрес несуществующего контроллера. Он также не делает приятных вещей, таких как обработка аргументов. Но это своего рода идея того, как работает фреймворк PHP MVC.

Кстати, другое название того, что вы называете бутстрапом, - фронт-контроллер . Вы можете погуглить этот термин, чтобы найти больше информации о шаблоне.

2
ответ дан 15 December 2019 в 06:23
поделиться

Вам нужно будет посмотреть, как настроить .htaccess , чтобы внутренне перезаписывать все запросы в ваш файл начальной загрузки, что может be index.php

Кохана использует это для этого

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Затем вы можете получить доступ к $ _ SERVER ['REQUEST_URI'] , чтобы начать маршрутизацию запросов к контроллерам.

1
ответ дан 15 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: