在条件语句中,require()和include()语句的行为是否有所不同?

时间:2012-04-22 04:47:22

标签: php include require conditional-statements

我想知道是否有任何理由超出需要或需要它(因此名称)。我偶然发现了这句话:

  

include()不同,require()将始终读入目标文件   如果它所在的行永远不会执行。如果你想条件   包含文件,请使用include()。条件陈述不会影响   require()。但是,如果发生require()的行是   未执行,目标文件中的任何代码都不会执行   执行。

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

2 个答案:

答案 0 :(得分:4)

如果您在false语句中包含了内容,则不会对其进行解析。要求也是如此。主要和唯一的区别是require将检查文件是否存在,即使它从未执行过。嗯,这至少是我对它的体验。

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

答案 1 :(得分:1)

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

function require($file) {
   if (!is_readable($file)) {
      die("can't read $file");
   }
   include($file);
}
每当你告诉PHP包含它时,

包含文件中的读取。 _once变体只是跟踪包含的内容,只进行一次包含。