PHP中的include和include_once

时间:2011-06-16 15:28:35

标签: php include

有人可以向我解释何时应该使用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

5 个答案:

答案 0 :(得分:12)

如果你总是include_once一切都会好的。它会阻止两次包含相同的文件。

假设你有这些文件:

cinclude b; include a;

binclude a;

aecho "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都包含C.部门由在那里工作的员工组成,所以A包括B.使用include_once,数据库模块只包含一次,因此不会有任何重复声明错误。

Include用于更为通用的内容,例如输出模板(可能回显活动用户名),故意设计为多次出现。

答案 3 :(得分:4)

答案 4 :(得分:1)

include_once()语句在执行脚本期间包含并评估指定的文件。这是一种类似于include()语句的行为,唯一的区别是如果已经包含文件中的代码,则不会再次包含它。顾名思义,它只包含一次。比方说,我有三个文件,

文件:

  1. 的functions.php
  2. GLOBALS.PHP
  3. 的header.php
  4. 这是每个文件的样子:

    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()函数是安全的。