【问题标题】:how to include a php file that already includes another file?如何包含一个已经包含另一个文件的 php 文件?
【发布时间】:2015-04-30 16:48:31
【问题描述】:

我试图在同一个表中的两个单独的<td> 标记中包含 2 个 php 文件。

<td><?php include 'login.php';?> </td>
<td><?php include 'register.php';?> </td>

两个 php 文件都包含另一个用于连接数据库的 php 文件(例如&lt;?php include 'database.php';?&gt;

现在,问题是,第二个文件没有出现在表格中。第一个文件有效。

PHP 文件独立工作。代码没问题。

我删除了 1.php 中的包含,一切正常 - 即。这两个文件都显示在表格中。

我的结论是,它会无限期地继续下去。现在,我该如何解决这个问题?

问候 加内什库马尔

【问题讨论】:

  • require_once($file)
  • 谢谢。试过了。它没有用。 include_once 也试过了。
  • 你对他们都做了吗?有些东西告诉我你也没有在每个文件中的包含上这样做。
  • 是的,你是对的。我在所有文件中都更改了它,现在它可以工作了。谢谢:-)
  • 您可以在包含的文件中对某些函数或实体进行条件包含。例如,查看我的答案,或stackoverflow.com/questions/9538601/… 问题中的其他答案。

标签: php php-include


【解决方案1】:

您可以使用include-once

include_once 语句包含并评估指定的文件 在脚本执行期间。这是一种类似于 include 语句,唯一的区别是如果代码 来自已包含的文件,不会再次包含。 顾名思义,它只会被包含一次。

即:

 include_once('database.php');
 include_once('login.php');
 include_once('register.php');

【讨论】:

    【解决方案2】:

    现在我考虑了一下,实际上你有几个选择。

    Require_once:

    require_once('database.php')
    

    对于您描述的这种文件,这是最被接受的方法,因为如果无法包含该文件,它将硬失败。对于进行程序实例化(即数据库连接)的文件,此方法是首选。

    包含一次:

    include_once('login.php')
    

    我从来没有找到理由在require_once 上使用此语句;但是,话虽如此,但这并不意味着没有。如果您有一个文件对与您的程序相关但不是关键任务的某些内容进行了一些实例化,那么您可以假设使用该指令而不是另一个指令。

    定义包含常量:

    这个方法需要更多解释:不要从包含文件(在我们的示例中为database.php)开始使用它的代码,而是以类似于 C/C99/C++ 的方式开始它。

    <?php
        if (!defined("INCLUDED_DATABASE"))
        {
            define("INCLUDED_DATABASE", true);
    
            // add main body of file here
        }
    ?>
    

    这个方法基本上完成了与include_oncerequire_once 相同的事情,除了在任何情况下它实际上不会在一个请求中处理两次正文,即使你忘记使用_once 足以满足您的 include/require 方法。这可以追溯到 C/C99/C++ 的旧时代 其中包含两次文件会使编译器硬失败,因为会发生重复的定义。


    就个人而言,我一直更喜欢最后一个选项:它是最严格的。是的,require_onceinclude_once 在努力使用时会产生相同的效果,但假设有人(甚至不一定是)正在修改应用程序并且不小心执行了 includerequire 而没有_once 后缀,他们将度过糟糕的一天。这种方法可以防止这种情况发生。

    也就是说,我仍然在必要时使用require_once,如果可以多次包含则使用require。 (具有该名称的文件不是使用define 构造设计的。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2013-01-06
      • 2012-10-29
      相关资源
      最近更新 更多