2011-11-17 81 views
0

我不是PHP专家。我试图增加include()的使用,使我的网站代码尽可能干净,而不仅仅是复制,例如所有页面中的标题代码。我有两个问题使用Include()或嵌套的include()有什么缺点吗?

1。在服务器请求,速度等方面使用include()很好吗?

的index.php

(一串代码)

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

(一串代码)

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

(一串代码)

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

2。也可以使用嵌套的include()吗?例如:

的header.php (一些代码)

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

现在的index.php将包括的header.php,然后将header.php文件包括searchFormInput.php以及 是这一优良?

非常感谢

+0

谢谢你的回答。我现在知道我应该如何使用它,缺点是什么以及要避免什么。再次感谢:) –

回答

2

是,包括一个常见的做法

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

包括给你可读性增益,并感谢它会更容易采用DRY规则。请记住以下几点:

  • 如果文件中包含一些代码,应该只执行一次(一些设置,类定义,函数定义等),使用include_once()(它不会有任何影响,如果在再次调用相同的文件名),

  • 如果该文件包含了一些代码,执行多次(例如,一些模板的形式),使用简单的include()

  • 如果需要的东西为你的应用程序工作(如一些安全码,一些设置等),请使用require()代替include()require_once()代替include_once() - 如果该文件不会被发现,PHP将抛出致命错误,将停止执行脚本,

2

原则缺点嵌套包括的是,你有可能碰到的情况时,交叉依赖导致文件被包含不止一次。尽管如此,使用include_once()很容易解决这个问题。

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

在另一方面,如果你有一个像

connect.php includes config.php 
session.php includes config.php 

一些结构,你将需要使用include_once('config.php')

+0

除了这个答案,我认为如果你正在处理一个大型项目,使用一个框架(codeIgniter,CakePHP)将是一个好主意。 –

1

包括,要求将其中读取文件和执行代码。

我对速度做了一些测试,包括和的file_get_contents 结果是包括和要求是比较

所以我的建议不提高夹杂的数量缓慢。

1

我想你应该看看autoload用PHP一次。你不需要关心包含每个文件和每个文件。只需调整您的自动加载,这将照顾所有这些。你需要用这个来做面向对象编程。

1

它的优良,在性能方面,它保持了代码在一定程度上清洁和可重用。不过,我建议您使用这种代码包含的模板,将所有信息加载到变量中,然后在模板中调用它们。考虑一个模板引擎http://www.smarty.net/或者可能是一个PHP框架或CMS http://drupal.org/这应该让你的生活在短期和长期更容易!