【问题标题】:Do require() and include() statement act differently while in a conditional statement?require() 和 include() 语句在条件语句中的行为是否不同?
【发布时间】:2012-05-03 03:58:29
【问题描述】:
我想看看除了需要它或需要它之外是否还有其他原因(因此得名)。我偶然发现了这个说法:
与include() 不同,require() 将始终读取目标文件,即使
如果它所在的行永远不会执行。如果你想有条件
包含一个文件,使用include()。条件语句不会影响
require()。但是,如果出现 require() 的行是
不执行,目标文件中的任何代码都不会被执行
执行。
我解释它的方式是包含最终不会运行的内部条件,实际上不会将它包含在其中,在我看来,这对服务器来说成本更低。我只是好奇这是不是真的。我没有在手册中看到它,所以我持怀疑态度。
【问题讨论】:
标签:
php
include
require
conditional-statements
【解决方案1】:
如果您在 false 语句中包含 include,它将不会被解析。要求也是如此。主要和唯一的区别是 require 将检查文件是否存在,即使它从未执行过。好吧,至少这是我的经验。
所以,两者都只会在执行后发生,但如果文件不存在,无论是否执行,require都会显示错误。
【解决方案2】:
不完全是如何实现的,但这应该让您了解两者之间的区别是什么:
function require($file) {
if (!is_readable($file)) {
die("can't read $file");
}
include($file);
}
每当您告诉 PHP 包含该文件时,include 都会读取该文件。 _once 变体只是跟踪包含的内容,并且只包含一次。