Со временем я разработал свой собственный фреймворк, и он отлично работает - он легкий, быстрый и проверенный, способный выдерживать приличную нагрузку.
Сейчас я работаю над проектом, который можно описать как интернет-магазин, где у каждого пользователя будет свой поддомен, где его товары будут доступны для продажи.
Мой фреймворк работает, разделяя URL запроса на / и определяя, что является
контроллер, параметры действий .. и т.д ..
и это прекрасно работает, но что делать с поддоменами?
Я изменил свой объект запроса, поэтому, когда я печатаю, скажем:
http://kodi.shop.local/
(я добавил SeverAlias * .shop.local)
вот так выглядит мой объект запроса:
DPLS_Request Object
(
[_request] => Array
(
[0] =>
[1] =>
[action] => defaultAction
[controller] => home
)
[_params] => Array
(
)
[_rurl:private] => kodi.shop.local
[_segment] => kodi
[get_params] => Array
(
)
)
Итак, _segment - это поддомен, и позже я могу использовать его в коде для проверки его соответствия имени пользователя и другим вещам, но у меня возникли концептуальные проблемы еще до этого.
Моя проблема в том, что моя структура ожидает, что какой-то контроллер и действия будут переданы, и потому что все, что он получает в конце URL-адреса, это / он предполагает, что это должно показать страницу индекса: (
что делать дальше ... как включить субдомены в историю контроллеров / действий mvc?
Одно быстрое и грязное решение - изменить часть моего класса запросов:
if($this->_request['controller']==''){
$this->_request['controller'] = DEFAULT_CONTROLLER;
}
if($this->_request['action']==''){
$this->_request['action'] = DEFAULT_ACTION;
}
и обернуть это в еще один , если , чтобы проверить, присутствует ли _segment, и если он назначен контроллеру DEFAULT _SHOP _CONTROLLER, который я определю в файле конфигурации, как, скажем, «store»
поэтому запрос выше будет аналогичен вводу http://shop.local/store/
(он запустит контроллер 'store' и действие по умолчанию)
что бы вы сделали в этом случае?
Есть ли «лучшие практики» при работе с поддоменами, контроллерами и действиями?