代码之家  ›  专栏  ›  技术社区  ›  spinon

为什么要对整个站点使用单个index.php页面?

  •  13
  • spinon  · 技术社区  · 14 年前

    有人能解释一下为什么会使用这种方法吗?这是我不熟悉的MVC模式吗?PHP是第二语言,所以我对最佳实践不太熟悉。

    我试过在Google中搜索“使用php的单索引页面”之类的东西,但是我找不到任何好的文章来解释为什么使用这种方法。我真的很想把这些老掉牙的东西踢到路边,而不是继续走这条路,但我想在提出建议之前有一些合理的理由。

    6 回复  |  直到 14 年前
        1
  •  17
  •   kijin    14 年前

    前端控制器(index.php)确保始终正确处理整个站点通用的所有内容(如身份验证),而不管您请求哪个页面。如果您有50个不同的PHP文件分散在各地,这是很难管理的。如果您决定更改公共库文件的加载顺序呢?如果你只有一个文件,你可以在一个地方更改它。如果您有50个不同的入口点,您需要更改所有入口点。

    有人可能会说,一直加载所有常用的东西是浪费资源,您应该只加载此特定页面所需的文件。是的。但是今天的PHP框架大量使用OOP和AutoLoad,所以这种“浪费”不再存在。

    前端控制器还可以让你很容易地在你的站点中拥有漂亮的URL,因为你可以完全自由地使用你喜欢的任何URL并将其发送到你需要的任何控制器/方法。否则你会被每个以 .php 后面是一个难看的查询字符串列表,避免这种情况的唯一方法是在.htaccess文件中使用更难看的重写规则。甚至WordPress,它有几十个不同的入口点(特别是在管理部分),迫使最常见的请求通过索引X.php,这样你就可以有一个灵活的PyMalink格式。

    几乎所有其他语言的web框架都使用单个入口点,或者更准确地说,调用单个脚本来引导一个进程,然后该进程与web服务器通信。Django就是这样工作的。CherryPy就是这样工作的。在Python中这样做是很自然的。唯一广泛使用的允许以任何其他方式编写web应用程序的语言(除了用作旧式CGI脚本时)是PHP。在PHP中,您可以给任何文件 .php文件 扩展,它将由web服务器执行。这是非常强大的,它使PHP易于学习。但是一旦你经历了一定程度的复杂性,单点进入方法开始看起来更有吸引力。

        2
  •  1
  •   Mike B    14 年前

    在公共目录中有一个index.php文件也可以防止php解释器崩溃。许多框架使用index.php文件将引导文件包含在doc根目录之外。如果发生这种情况,用户将能够看到这个文件的源代码,而不是整个代码库。

        3
  •  0
  •   JustcallmeDrago Vivek    14 年前

    好吧,如果唯一改变的是网址的话,除了审美目的之外,似乎没有任何理由。。。

        4
  •  0
  •   zerkms    14 年前

    至于我-单个入口点可以帮助您更好地控制您的应用程序:它有助于轻松处理错误、路由请求、调试应用程序。

        5
  •  0
  •   Eric Butera    14 年前

    一个单独的“index.php”是确保所有对应用程序的请求都通过同一个门的简单方法。这样,当您添加第二个页面时,就不必确保引导、身份验证、授权、日志记录等都配置好了——您可以根据框架的优点免费获得它。

        6
  •  -1
  •   Philip    14 年前

    当页面的内容由数据库内容决定时,通常使用这种方法。因此所有的工作都将在一个文件中完成。这在CMS系统中常见。