php - 如何将子域合并到 MVC 框架中

标签 php model-view-controller

随着时间的推移,我开发了自己的框架并且它运行良好 - 它轻巧,速度快并且被证明可以处理体面的负载。

现在我正在做一个可以描述为在线商店的项目,每个用户都将拥有自己的子域,他的商品将在其中出售。

我的框架通过将请求 url 拆分为/并确定什么是 Controller 、 Action 参数等。

这很好用,但是如何处理子域呢?

我已经修改了我的请求对象,所以当我输入时让我们说:

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 是子域,稍后我可以在代码中使用它来验证它与用户名和其他内容的对比,但我什至在此之前就遇到了概念问题。 我的问题是我的框架期望传递一些 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/

相关文章:

php - InnoDB 仅在引用的 id 存在时插入记录(无外键)

c# - 如何在 MVC Controller 操作后返回 View ?

php如何基于动态考勤系统

PHP:如何重用代码(oop)?

javascript - 选择或取消选择复选框

php - 年龄计算&如果在里面如果不工作/php

java - 关于不影响服务器启动的Java Web MVC框架的任何建议

model-view-controller - ASP.Net MVC 和 MVVM

android - 为什么 MVC 中的单元测试比 MVP 和 MVVM 更难