随着时间的推移,我开发了自己的框架并且它运行良好 - 它轻巧,速度快并且被证明可以处理体面的负载。
现在我正在做一个可以描述为在线商店的项目,每个用户都将拥有自己的子域,他的商品将在其中出售。
我的框架通过将请求 url 拆分为/并确定什么是 Controller 、 Action 参数等。
这很好用,但是如何处理子域呢?
我已经修改了我的请求对象,所以当我输入时让我们说:
(我添加了 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 是子域,稍后我可以在代码中使用它来验证它与用户名和其他内容的对比,但我什至在此之前就遇到了概念问题。 我的问题是我的框架期望传递一些 Controller 和操作,并且因为他在 URL 末尾得到的是/他假设它应该显示索引页面:(
那么接下来要做什么......如何将子域合并到整个 mvc Controller / Action 故事中?
一个快速而肮脏的解决方案是修改我的请求类的一部分:
if($this->_request['controller']==''){
$this->_request['controller'] = DEFAULT_CONTROLLER;
}
if($this->_request['action']==''){
$this->_request['action'] = DEFAULT_ACTION;
}
并将其包装在另一个 if 中以测试 _segment 是否存在,如果它被分配给 Controller DEFAULT _SHOP _CONTROLLER,我将在配置文件中将其定义为“存储”
所以上面的请求将类似于输入 http://shop.local/store/ (它将运行“存储” Controller 和默认操作)
在这种情况下你会怎么做? 在处理子域、 Controller 和操作时是否有任何“最佳实践”?
最佳答案
在我看来,您所描述的方法是实现所添加功能的合乎逻辑的下一步。新功能会增加一些复杂性,但您的请求对象/路由器应该很好地封装“提供段时我调用什么 Controller ?提供段和 Controller 时?”的逻辑。等。我说去吧。
关于php - 如何将子域合并到 MVC 框架中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/502835/