2

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

所以我有几个问题...

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

2 回答 2

4

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

...当你有数百个页面控制器时怎么办?您最终会得到一个巨大的 switch 语句,或者可能是某种伪装在数组、XML 文档或其他东西中的东西。对于每个页面请求,PHP 都必须重新加载一堆与用户尝试执行的当前请求无关的数据。

这是一个非常薄弱的​​论点。首先,这是实现路由机制的一种糟糕的方式。其次,应用程序必须相当复杂才能产生任何可衡量的效果 - 如果应用程序如此复杂,那么与应用程序其余部分的执行相比,入口点的任何性能影响都很可能是最小的。

并考虑:如果用于处理复杂 Web 应用程序前端的 PHP 脚本难以维护,想象一下等效.htaccess文件会是什么样子!

最后,您可以避免字节码缓存的问题,从而使为每个请求加载脚本的“问题”变得毫无意义。

于 2012-04-28T04:02:16.530 回答
2

也许是啤酒,但那篇文章对我来说意义不大,它还把很多“词”放在引号里。我不同意那里提到的一些事情。它确实说...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。它使用前端控制器模式,通过一个脚本路由所有内容。我对这种方法没有任何限制,它提供了一切,而且超出了我的需要。

以上是我的想法,希望对你有帮助。

于 2012-04-28T04:07:43.983 回答