我一直想知道这一点,我还没有在SE中看到答案。
在php中使用includes时,我的工作理解是服务器将处理包含的任何代码。
这意味着在下面的条件中,两个大的代码块都在服务器上处理,即使这些代码中只有一个将是EMPLOYED。
<?php
if($conditional === TRUE){
include("MASSIVEAMOUNTOFCODE.php");
}
else {
include("GARGANTUANAMOUNTOFCODE.php");
}
?>
(请在此赦免严重简化的代码。)
我最近开始使用以下结构执行相同的任务,目的是节省服务器上的处理时间。 请告诉我,如果只加载一个包含文件,或者我是傻瓜的差事:
<?php
if($conditional === TRUE){
$includeFile = "MASSIVEAMOUNTOFCODE.php";
}
else {
$includeFile = "GARGANTUANAMOUNTOFCODE.php";
}
include("$includeFile");
?>
注意&#34;包含&#34;的双重用法在第一个样本中,只有一次使用&#34;包括&#34;在第二个样本中。
答案 0 :(得分:2)
您最初处理这两个文件的假设是错误的。
include语句。通过在非执行分支的include文件中添加语法错误,可以看到这是真的。我做了:
testinclude.php:
<?php
if (false)
include 'badinclude.php';
echo "done\n";
badlinclude.php:
<?php
$foo =;
当我执行testinclude.php
时,没有关于badlinclude.php
中语法错误的投诉。但如果我将if (false)
更改为if (true)
,我会收到错误。
解析错误:语法错误,意外';'在第3行的/Users/barmar/badinclude.php中
因此,您的代码的两个版本应该是等效的。
答案 1 :(得分:-1)
你的假设是错误的。
include所做的是当函数调用时,它会将文件作为新的PHP文件加载到与调用它相同的环境中。
示例:
test.php的:
<?php $test = 'test'; include('test2.php'); ?>
test2.php:
<?php echo $test; ?>
这将输出:
test
回到你提出的问题,它不会处理这两个文件,因为如果某些东西是真的,它就不能同时执行这两个函数调用,如果不是,则不能执行另一个函数调用。 include就像任何其他普通函数一样,因为它在被调用之前不会被执行。
如果您想确保文件只包含一次,甚至要求加载一次,请使用include_once或require_once。