最好有一个 php 前加载器还是使用 .htaccess 来加载控制器


Is it better to have a php front loader or use .htaccess to load controllers?

我遇到了这篇文章,如何实现前端控制器。 本文建议加载控制器的更好方法是将其留给 apache,因为这是它的设计目的。

所以我有几个问题...

    使用
  1. .htaccess 是使用 php 将请求路由到控制器的可行替代方案吗?
  2. 哪种方式更好、更快、模块化和便携?
  3. 有没有人真正以这种方式实现 mvc 框架?如果是这样,有什么提示吗?
  4. 有谁知道任何讨论这种技术的网站(我在
    谷歌)?

该文章中对使用单个入口点的主要反对意见似乎是:

。当您有数百个页面控制器时呢?你最终得到 一个巨大的开关语句,或者可能是伪装在数组中的东西, 一个 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. 当然,我想这是真的,但是当有任何强大,灵活和大型的系统不需要一点学习。

关于您的问题:

  1. .htaccess可能是使用 PHP 的可行替代方案,但可扩展性要差得多,并且变得复杂且难以快速管理。 你可以在Apache,lighttpd,nginx中进行这样的URL配置,我偶尔看到过它,但对某些人来说,这样做将是一个很大的学习曲线。

    如果你使用 PHP 进行路由,它可以从配置文件、数组中获取它的路由信息,甚至可以通过对象注入。 这为您提供了极大的灵活性,并可以根据许多因素包含或排除路径。

  2. 使用服务器配置文件配置 URL 路由可能会更快一些,但差异很小。 服务器配置的模块化程度要低得多,并且不能在不同的HTTP服务器上移植。 本机语言前端控制器适用于任何服务器平台。

  3. 我还没有看到一个MVC框架可以做到这一点,但我还没有研究过PHP之外的许多框架。

  4. 这个也帮不上忙。

就个人而言,在PHP中,我经常使用Zend Framework。 它使用前端控制器模式,通过一个脚本路由所有内容。 我对这种方法没有任何限制,它提供了一切,而且比我需要的更多。

这些是我的想法,希望对您有所帮助。