最近我一直在为一些个人项目研究 PHP 框架,看起来它们中的大多数都使用前端控制器来模拟响应。控制器从请求中获取参数,并根据逻辑发送适当的标头来重新路由。这就是“回应”。这是在 PHP 中执行此操作的最佳方法,还是有其他关于如何处理重新路由和响应的理论?
2 回答
前端控制器非常适合 Web 环境,允许您将所有请求汇集到您的应用程序。由于 HTTP 是无状态的,从某种意义上说,用户可能会无意中偶然发现应用程序的某些部分(即,点击随机 URL),前端控制器允许您确定应用程序的入口点,并做出适当的响应。
编辑:作为对评论的回应,我认为混淆可能是java比PHP有更多的结构,这可能会使整个事情过于复杂?最终 PHP 可以提供从请求到响应的非常基本的交互:
switch($_GET['page']) {
case "one";
print "page one!";
break;
default:
print "default page";
break;
}
从那里您可以将各种事物分层到前端控制器,将请求对象向下传递到过滤器链到页面控制器,该控制器重新路由到适当的模型,该模型通过您的数据库抽象层抓取数据,过滤它,备份到控制器,并且转到构建适当响应的视图,同时触发随机事件挂钩。最终由您(作为开发人员)选择您正在寻找的复杂性/分离级别。这是 PHP 的美与恶 :)
我认为您将 Http 响应与您查看的框架中的响应对象混淆了。前端控制器是您的应用程序的网关 - 所有(http)请求都通过它,并路由到适当的控制器/动作。处理请求不一定会导致返回响应(通常请求只是为了向服务器发送信息),但是所有请求都将通过前端控制器。
请求对象通常用于封装环境和http请求参数,并提供API来检索它们。它的补充,即响应对象,通常用于封装生成http响应的过程,包括生成头。
还有其他处理请求和路由的方法,它们不是 PHP 独有的(前端控制器也不是),例如页面控制器,或者根本不使用 MVC 结构。