我遇到了这篇文章,如何实现前端控制器。该文章建议加载控制器的更好方法是将其留给 apache,因为这是它的设计目的。
所以我有几个问题...
- 使用 .htaccess 是使用 php 将请求路由到控制器的可行替代方案吗?
- 哪种方式更好、更快、模块化和便携?
- 有没有人以这种方式实际实现过 mvc 框架?如果是这样,有什么提示吗?
- 有谁知道任何讨论这种技术的网站(我在谷歌上找不到任何东西
)?
我遇到了这篇文章,如何实现前端控制器。该文章建议加载控制器的更好方法是将其留给 apache,因为这是它的设计目的。
所以我有几个问题...
那篇文章中对使用单个入口点的主要反对意见似乎是:
...当你有数百个页面控制器时怎么办?您最终会得到一个巨大的 switch 语句,或者可能是某种伪装在数组、XML 文档或其他东西中的东西。对于每个页面请求,PHP 都必须重新加载一堆与用户尝试执行的当前请求无关的数据。
这是一个非常薄弱的论点。首先,这是实现路由机制的一种糟糕的方式。其次,应用程序必须相当复杂才能产生任何可衡量的效果 - 如果应用程序如此复杂,那么与应用程序其余部分的执行相比,入口点的任何性能影响都很可能是最小的。
并考虑:如果用于处理复杂 Web 应用程序前端的 PHP 脚本难以维护,想象一下等效.htaccess
文件会是什么样子!
最后,您可以避免字节码缓存的问题,从而使为每个请求加载脚本的“问题”变得毫无意义。
也许是啤酒,但那篇文章对我来说意义不大,它还把很多“词”放在引号里。我不同意那里提到的一些事情。它确实说...that this approach to implementing a Front Controller in PHP does alot (sic) to raise the learning curve required to become fluent with the framework
。当然,我认为这是真的,但是什么时候有任何强大、灵活和大型的系统不需要一点点学习。
关于您的问题:
.htaccess
可能是使用 PHP 的一种可行的替代方案,但可扩展性要差得多,并且变得复杂且难以快速管理。您可以在 Apache、lighttpd、nginx 中进行这样的 URL 配置,我偶尔也看到过这样做,但对于某些人来说,这样做会是一个很大的学习曲线。
如果你使用 PHP 来做路由,它可以从配置文件、数组,甚至通过对象注入来获取它的路由信息。这为您提供了很大的灵活性,并可以根据许多因素包括或排除路线。
使用服务器配置文件配置 URL 路由可能会更快一些,但差别很小。服务器配置的模块化程度要低得多,并且不能跨不同的 HTTP 服务器移植。本机语言前端控制器适用于任何服务器平台。
我还没有看到可以做到这一点的 MVC 框架,但我还没有研究过 PHP 之外的很多内容。
也帮不上这个忙。
就个人而言,在 PHP 中我经常使用Zend Framework。它使用前端控制器模式,通过一个脚本路由所有内容。我对这种方法没有任何限制,它提供了一切,而且超出了我的需要。
以上是我的想法,希望对你有帮助。