我想知道是否有任何理由超出需要或需要它(因此名称)。我偶然发现了这句话:
与
include()
不同,require()
将始终读入目标文件 如果它所在的行永远不会执行。如果你想条件 包含文件,请使用include()
。条件陈述不会影响require()
。但是,如果发生require()
的行是 未执行,目标文件中的任何代码都不会执行 执行。
我解释它的方式是包括不会最终运行的内部条件,实际上不会将其包含在那里,这对我来说似乎对服务器的成本更低。如果这是真的,我只是好奇。我没有在手册中看到它,所以我持怀疑态度。
答案 0 :(得分:4)
如果您在false语句中包含了内容,则不会对其进行解析。要求也是如此。主要和唯一的区别是require将检查文件是否存在,即使它从未执行过。嗯,这至少是我对它的体验。
因此,两者都只发生一次,但如果文件不存在,require将显示错误,无论文件是否已执行。
答案 1 :(得分:1)
不完全是如何实现的,但这应该让你知道两者之间的区别是什么:
function require($file) {
if (!is_readable($file)) {
die("can't read $file");
}
include($file);
}
每当你告诉PHP包含它时,包含文件中的读取。 _once变体只是跟踪包含的内容,只进行一次包含。