使用Include()或嵌套include()是否有任何缺点?

时间:2011-11-17 15:18:21

标签: php

我不是PHP的专家。我试图增加include()的使用,使我的网站代码尽可能干净,而不是只复制,例如,所有页面中的标题代码。我有两个问题

1。在服务器请求,速度等方面使用include()是一种好习惯吗?

的index.php

(一堆代码)

  <? include("connect.php") ?>;

(一堆代码)

 <? include("header.php") ?>;

(一堆代码)

 <? include("footer.php") ?>;

2。是否也可以使用嵌套的include&#39; s()?例如:

的header.php (一些代码)

<? include("searchFormInput.php") ?>;

现在index.php将包含header.php,然后header.php也会包含searchFormInput.php 这很好吗?

非常感谢

5 个答案:

答案 0 :(得分:2)

嵌套的主要缺点包括您可能遇到交叉依赖导致文件被包含多次的情况。但是,使用include_once()可以轻松解决这个问题。

在您的示例中,header.php包含searchFormInput.php,您可能不会有问题,假设这些文件主要生成HTML输出而不是解析类和依赖项。

另一方面,如果你有一些像

这样的结构
connect.php includes config.php
session.php includes config.php

您需要使用include_once('config.php')

答案 1 :(得分:2)

是的,包括常规练习

是的,包括给你轻微的性能损失(非常小)。

包括为您提供可读性增益,并且由于它将更容易使用DRY规则。请记住以下内容:

  • 如果文件包含一些应该只执行一次的代码(某些设置,类定义,函数定义等),请使用include_once()(如果在同一文件名上再次调用它将无效),

  • 如果文件包含多次执行的代码(例如表单的某些模板),请使用简单的include()

  • 如果您的应用需要某些工作(例如某些安全代码,某些设置等),请使用require()代替include()require_once()代替{ {1}} - 如果找不到该文件,PHP将抛出致命错误并将停止执行您的脚本,

答案 2 :(得分:1)

include,require将读取文件并在其中执行代码。

我对include和file_get_contents的速度进行了一些测试 结果是包括,并且要求比较慢

所以我的建议不会增加包含数量。

答案 3 :(得分:1)

我认为你应该用PHP查看autoload一次。您不应该关心每个文件的包含。只需调整自动加载即可完成所有这些操作。你需要用这个来进行面向对象的编程。

答案 4 :(得分:1)

在性能方面这很好,它可以在一定程度上保持代码清洁和可重用。但是,我建议您使用模板进行此类代码包含,将所有信息加载到变量中,然后在模板中调用它们。考虑一个模板引擎http://www.smarty.net/或者PHP框架或CMS http://drupal.org/,它可以让您在短期和长期内更轻松地生活!