我一直在为一些个人项目研究PHP框架,看起来他们中的大多数都使用前端控制器来模仿响应。控制器从请求中获取params,并根据逻辑通过发送适当的头来重新路由。这是<!> quot; response <!> quot;。这是在PHP中执行此操作的最佳方式,还是有关于如何处理重新路由和响应的其他理论?

有帮助吗?

解决方案

前端控制器非常适合Web环境,允许您将所有请求汇集到应用程序中。因为HTTP是无状态的,并且用户可以在某种意义上无意中偶然发现应用程序的某些部分(即,点击随机URL),前端控制器允许您确定应用程序的入口点,并做出适当的响应。 / p>

编辑:为了回应这些评论,我认为混淆可能是java比PHP有更多的结构,这可能会使整个事情过于复杂化?最终PHP可以提供从请求到响应的非常基本的交互:

switch($_GET['page']) {
  case "one";
      print "page one!";
      break;
  default:
      print "default page";
      break;
}

从那里你可以将各种各样的东西分层到前控制器,将请求对象从过滤器链传递到页面控制器,页面控制器重新路由到适当的模型,该模型通过db抽象层抓取数据,过滤它,然后返回到控制器,以及构建适当响应的视图,同时触发随机事件挂钩。最终由您(作为开发人员)来选择您正在寻找的复杂性/分离级别。这既是PHP的美丽与邪恶:)

其他提示

我认为你在你看到的框架中将Http响应与响应对象混淆了。前端控制器是应用程序的网关 - 所有(http)请求都通过它,并路由到适当的控制器/操作。处理请求不一定会导致返回的响应(通常请求只是向服务器发送信息),但所有请求都会通过前端控制器传递。

请求对象通常用于封装环境和http请求参数,并提供API来检索它们。它的补充,即响应对象,通常用于封装生成http响应的过程,包括生成头。

还有其他处理请求和路由的方法,这些方法并非PHP独有(也不是前端控制器),例如页面控制器,或根本不使用MVC结构。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top