3

我想看看除了需要它或需要它之外是否有任何理由(因此得名)。我偶然发现了这个说法:

与, 不同include()require()将始终读取目标文件,即使它所在的行从不执行。如果要有条件地包含文件,请使用include(). 条件语句不会影响require(). 但是,如果require()发生的行没有被执行,那么目标文件中的任何代码都不会被执行。

我解释它的方式是包含最终不会运行的内部条件,实际上不会将它包含在其中,在我看来,这对服务器来说成本更低。我只是好奇这是不是真的。我没有在手册中看到它,所以我持怀疑态度。

4

2 回答 2

4

如果您在错误语句中包含包含,它将不会被解析。要求也是如此。主要和唯一的区别是 require 将检查文件是否存在,即使它从未执行过。好吧,至少这是我的经验。

因此,两者都只会在执行后发生,但如果文件不存在,无论是否执行,require都会显示错误。

于 2012-04-22T04:52:14.550 回答
1

不完全是如何实现的,但这应该让您了解两者之间的区别是什么:

function require($file) {
   if (!is_readable($file)) {
      die("can't read $file");
   }
   include($file);
}

每次您告诉 PHP 包含该文件时,include 都会读取该文件。_once 变体只是跟踪包含的内容,并且只包含一次。

于 2012-04-22T05:01:07.460 回答