为什么在php cms中包含而不是require?

时间:2010-08-06 08:10:08

标签: php syntax include require

我看到php CMS使用include而不是require为他们的重要文件。不应该要求header.php这样的文件吗? 如果无法打开文件,脚本会继续运行!

4 个答案:

答案 0 :(得分:3)

取决于。可能是懒惰或未受过教育的开发者的标志。但如果标题是一个重要的文件 - 即。包含授权逻辑(它不应该) - 然后是,您可能希望使用require代替include

答案 1 :(得分:2)

include允许发生警告,因此脚本的其余部分仍将执行。 require会导致致命错误,从而立即停止执行。这通常会导致输出错误描述的完全空白页面。在我看来,require_once是最方便的,特别是如果脚本中的脚本中有脚本,因为如果多次定义函数会输出致命错误。我个人更喜欢,require_once()因为它阻止php代码溢出到HTML中供用户查看

以下是一些例子

Condition: file test.php does not exist

使用include():

<?php
  include("test.php");
  print "<p>Hey This String Still Prints Dude!</p>";
?>

结果:


Warning: include(test.php) [function.include]: failed to open 
stream: No such file or directory in 
/home/webspotm/public_html/error/index.php on line 2

Warning: include() [function.include]: Failed opening 'test.php' 
for inclusion (include_path='.:/home/webspotm/.imports') 
in /home/webspotm/public_html/error/index.php on line 2

Hey This String Still Prints Dude!


使用require():

<?php
  require("test.php");
  print "<p>Yea don't even try, this code ain't gonna show!</p>";
?>

结果:

Warning: require(test.php) [function.require]: 
failed to open stream: No such file or directory in 
/home/webspotm/public_html/error/index.php on line 2

Fatal error: require() [function.require]: Failed opening 
required 'test.php' (include_path='.:/home/webspotm/.imports') in 
/home/webspotm/public_html/error/index.php on line 2

答案 2 :(得分:1)

作者不知道include和require之间的区别,或者他不介意文件是否包含在内。

答案 3 :(得分:0)

如果找不到文件,include()结构将发出警告;这是require()的不同行为,会发出致命的错误。