我正在使用 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 上。我认为我现在对 MVC 的实现是正确的,但是前端控制器仍然带来了限制。