Drupal,Wordpress等几个流行的CMS都有一个index.php文件,除了包含一些其他PHP文件的include / require语句外,它几乎是空的(如在一个文件中) )包含CMS的所有引导代码。这是什么理由?为什么不将所有引导代码移动到index.php中,如果它除了包含引导代码之外什么都不做呢?
我正在尝试构建一个CMS作为示例项目来提高我的PHP技能,我想了解设计考虑因素导致他们以这种方式做到这一点。我理解将应用程序分解为多个文件的好处,但我从来没有听说过制作一个除了包含另一个文件之外什么都不做的文件。显然有一些好处,因为几个主要的CMS项目都是这样设计的,但我无法弄清楚它是什么。
有人可以向我解释这个原因吗?
答案 0 :(得分:2)
在Drupal的案例中,还有其他文件可以执行类似的引导程序。这些通常不是普通页面,但确实起到了重要作用。我的头顶cron.php
,update.php
和install.php
执行此操作。我在自定义导入脚本的开头使用引导过程,以及cron
调用的脚本,我不想使用hook_cron
。
答案 1 :(得分:1)
我可以想到两个原因:
使用像Wordpress这样的产品时,有时最终会向前端控制器添加用户黑客 - 例如,设置自定义常量,特定重定向或其他访问控制层等等。空索引文件允许您添加此类内容而不会干扰产品的原始代码。
将所有内容都放在单独的引导程序中,可以将所有代码(包括引导程序)移动到Web根目录之外的位置,并从那里包含它。
< / LI>答案 2 :(得分:0)
美学大多数。您可以拥有一个干净整洁的目录结构(在webroot之外),其中bootstrapping文件与index.php文件分开。可能有几个(与一个index.php文件相比),他们正在做不同的事情(db init,授权)。
我还发现一个或两个CMS在调试声明中启动(为了在包含任何文件之前切换显示错误和警告,所以你可以在php包含一个语法错误的文件之前打印你的错误,但那不是真的好的做法)。
答案 3 :(得分:0)
我认为这是一个很好的设计,因为您可以轻松更改引导程序的路径,这样可以在必要时更改CMS的位置。
另一个很好的理由是你也可以在开发时运行开发CMS,并在index.php中推出一个路径更改的新版本。