有人可以向我解释何时应该使用include和include_once以及应该如何使用它。
我是PHP的新手,想要了解这是非专业术语。关于PHP文档在www.php.net上提到的内容不太清楚。
我们说我有以下文件夹结构
-->Root-->API-->User.php
-->Root-->Users-->CreateUser.php
如果我必须在CreateUser.php中使用User.php,我应该怎么做。
如果
下有另一个文件-->Root-->API-->Utility-->ImageProcessor.php
我应该如何将ImageProcessor.php包含在CreateUser.php
中答案 0 :(得分:12)
如果你总是include_once
一切都会好的。它会阻止两次包含相同的文件。
假设你有这些文件:
c
:include b; include a;
b
:include a;
a
:echo "hello";
当您执行c
时,a
将被包含两次(很可能是不受欢迎的情况),因此如果您将所有这些用作include_once
,则只会调用一次。< / p>
它带来了一点性能成本,但如果你不是Facebook左右,这不是一个显着的成本。
答案 1 :(得分:4)
在CreateUser.php中:
include_once("/API/User.php");
include_once("/API/Utility/ImageProcessor.php");
如果有必要确保包含这些文件,则应使用require_once代替...
答案 2 :(得分:4)
当涉及隐式嵌套要求(任何更好的术语?)时使用include_once。我的意思是这样的:
假设
因为模型需要数据库连接,A和B都包含C.部门由在那里工作的员工组成,所以A包括B.使用include_once,数据库模块只包含一次,因此不会有任何重复声明错误。
Include用于更为通用的内容,例如输出模板(可能回显活动用户名),故意设计为多次出现。
答案 3 :(得分:4)
答案 4 :(得分:1)
include_once()语句在执行脚本期间包含并评估指定的文件。这是一种类似于include()语句的行为,唯一的区别是如果已经包含文件中的代码,则不会再次包含它。顾名思义,它只包含一次。比方说,我有三个文件,
文件:
这是每个文件的样子:
FUNCTIONS.PHP
<?php
function foo(){
echo 'some code';
}
?>
GLOBALS.PHP:
<?php
include('FUNCTIONS.PHP');
foo();
?>
HEADER.PHP
<?php
include('FUNCTIONS.PHP');
include('GLOBALS.PHP');
foo();
?>
现在,如果您尝试打开HEADER.PHP,您将收到错误,因为GLOBALS.PHP已包含FUNCTIONS.PHP。你会得到一个错误,说函数foo()已经在GLOBALS.PHP中声明了,我也包含在HEADER.PHP中 - 这意味着我已经将FUNCTIONS.PHP包含了两次。 所以为了确保我只包含一次FUNCTIONS.PHP,我应该使用include_once()函数,所以我的HEADER.PHP应该如下所示: HEADER.PHP
<?php
include_once('FUNCTIONS.PHP');
include('GLOBALS.PHP');
?>
现在当我打开HEADER.PHP时,我不再会收到错误,因为PHP知道只包含文件FUNCTIONS.PHP 因此,为了避免出错,在PHP代码中使用include_once()而不是include()函数是安全的。