繁体   English   中英

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

[英]Why use a single index.php page for entire site?

我要接管一个现有的PHP项目。 我注意到以前的开发人员在整个网站上使用一个index.php页面,目前使用10多个页面。 这是我看到的第二个这样的项目。 我看不到这种方法的优势。 实际上,这似乎使所有事情变得复杂,因为现在您不能只向网站添加新页面并链接到该页面。 您还必须确保使用if子句更新主索引页面以检查该页面类型,然后加载该页面。 看来,如果他们只是想重用模板,则将includes用作页眉和页脚,然后使用所引用的文件创建每个新页面会更容易。

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

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

前端控制器(index.php)可确保始终正确处理整个站点共有的所有内容(例如,身份验证),无论您请求哪个页面。 如果您到处散布了50个不同的PHP文件,则很难进行管理。 而且,如果您决定更改公共库文件的加载顺序,该怎么办? 如果只有一个文件,则可以在一个位置进行更改。 如果您有50个不同的入口点,则需要全部更改。

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

前端控制器还使您很容易在站点中拥有漂亮的URL,因为您绝对可以随意使用自己喜欢的任何URL,并将其发送到所需的任何控制器/方法。 否则,您将陷入以.php结尾的每个URL后面紧跟丑陋的查询字符串列表的情况,而避免这种情况的唯一方法是在.htaccess文件中使用甚至更丑陋的重写规则。 即使是WordPress,它具有数十种不同的入口点(尤其是在admin部分中),也会强制大多数常见的请求通过index.php进行访问,以便您可以使用灵活的永久链接格式。

几乎所有其他语言的Web框架都使用单个入口点-或更准确地说,调用单个脚本来引导进程,然后该进程与Web服务器进行通信。 Django就是这样。 CherryPy就是这样。 用Python这样做很自然。 使Web应用程序以任何其他方式编写(除非用作老式CGI脚本时)的唯一广泛使用的语言是PHP。 在PHP中,您可以为任何文件赋予.php扩展名,然后它将由网络服务器执行。 这非常强大,并且使PHP易于学习。 但是一旦您超过了一定程度的复杂性,单进入点的方法就会开始变得更具吸引力。

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

好吧,如果唯一改变的是URL,那么除了出于美观目的之外,它似乎并没有出于任何原因而完成...

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

单个“ index.php”是确保对应用程序的所有请求都流经同一门的简单方法。 这样,当您添加第二个页面时,不必确保所有引导程序,身份验证,授权,日志记录等都已配置完毕-您可以免费获得该框架的优点。

在现代Web框架中,这可能使用前端控制器,但由于许多PHP代码/开发人员都患有NIH综合症,因此无法确定。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM