0

我看到 php CMS 使用 include 而不是 require 他们的重要文件。不应该需要诸如 header.php 之类的文件吗?如果文件无法打开,脚本将继续!

4

4 回答 4

3

要看。可能是懒惰或未受过教育的开发人员的标志。但是,如果标头是一个重要文件——即包含授权逻辑(它不应该)——那么是的,你会想要使用require.include

于 2010-08-06T08:54:17.347 回答
2

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

这里有一些例子

条件:文件test.php不存在

使用 include() :

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

结果:

警告:include(test.php) [function.include]: 未能打开
流:中没有这样的文件或目录
/home/webspotm/public_html/error/index.php 在第 2 行

警告:include() [function.include]:打开“test.php”失败
包含(include_path='.:/home/webspotm/.imports')
在第 2 行的 /home/webspotm/public_html/error/index.php

嘿,这个字符串仍然打印老兄!


使用 require() :

<?php
  要求(“test.php”);
  print "<p>是的,不要尝试,这段代码不会显示!</p>";
?>

结果:

警告:需要(test.php)[function.require]:
无法打开流:中没有这样的文件或目录
/home/webspotm/public_html/error/index.php 在第 2 行

致命错误:require() [function.require]:打开失败
需要 'test.php' (include_path='.:/home/webspotm/.imports') 在
/home/webspotm/public_html/error/index.php 在第 2 行
于 2010-08-06T17:56:44.063 回答
1

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

于 2010-08-06T08:16:46.787 回答
0

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

于 2010-08-06T08:26:41.503 回答