【发布时间】:2012-08-31 09:18:45
【问题描述】:
我正在使用 MVC 方法(不使用任何框架,纯 PHP)在 PHP 中开发 Web 应用程序。与 MVC 的情况一样,每个请求都到达前端控制器,前端控制器将其路由到相应的控制器,并执行请求的操作。 URL 结构如下所示:
www.site.com/controller/action
假设我正在构建一个包含不同类别产品的电子商务网站。可能的 URL 可能是:
www.site.com/sofas/overview
www.site.com/video-games/overview
对于第一个 URL,“沙发”控制器被加载,并执行它的 overview() 方法。这一切都很好,直到我们必须将这些产品嵌套在父类别中。我将使用前面的两个 URL 来说明我的意思:
www.site.com/furniture/sofas/overview
www.site.com/electronics/video-games/overview
现在,“视频游戏”控制器嵌套在“电子”控制器中。但是,对于当前的“加载控制器 -> 执行操作”结构,这是行不通的。
一个可能的解决方案是在父控制器(“电子设备”)中创建一个方法,以防请求不存在的操作(“视频游戏”)时执行该方法。此方法检查请求的操作是否作为控制器存在。如果是这样,则加载控制器并执行它的操作(“概述”)。
我徒劳地寻找解决标准前端控制器模式限制的方法,包括 SO 上的here。我觉得我现在的 MVC 实现是正确的,但是前端控制器还是带来了限制。
【问题讨论】:
标签: php model-view-controller front-controller