我有几个页面在PHP中使用include或require语言结构。其中许多都属于IF,ELSE语句。
我确实意识到如果缺少require'd文件,页面根本不会加载,但包含这种方式的主要目的是:
1)减少页面上的代码混乱
2)除非满足声明,否则不加载文件。
发布include或require语句是否会加载文件(从而消除了我试图通过置于if / else语句中获得的好处?
简要示例:
<?php
$i = 1
if($i ==1) {
require_once('somefile.php');
} else {
require_once('otherfile.php');
}
?>
在页面加载时,是否检查并加载了两个文件?
答案 0 :(得分:8)
如果您在include
(或require
)的正文中放置if
/ else
声明,则会执行该声明如果if
的条件为真。
if ($a == 10) {
// your_first_file.php will only be loaded if $a == 10
require 'your_first_file.php';
} else {
// your_second_file.php will only be loaded if $a != 10
require 'your_second_file.php';
}
而且,如果你愿意,你可以很容易地测试它。
第一个例子:
if (true) {
require 'file_that_doesnt_exist';
}
会得到你:
Warning: require(file_that_doesnt_exist) [function.require]: failed to open stream: No such file or directory
Fatal error: require() [function.require]: Failed opening required 'file_that_doesnt_exist'
即。 require
已执行 - 并且因文件不存在而失败。
虽然这是第二个例子:
if (false) {
require 'file_that_doesnt_exist';
}
不会给您带来任何错误:require
未执行。
答案 1 :(得分:4)
答案 2 :(得分:2)
不,只会加载其中一个文件。
答案 3 :(得分:2)
include
和require
构造仅在传递时进行评估。只有在满足表达式时才会读取文件。
通过考虑构造可能包含变量来解释很简单:
require_once("otherfile-{$i}.php");
这是支持的。但是在PHP运行该特定行之前它可能无法工作,因为它需要知道加载正确文件的$i
状态。