0

在 PHP 中,假设我有三个类:

database.php
item.php
user.php

类 item 和 user 都有include("database.php");连接数据库和执行查询的语句。

说,我有一个页面,我想在其中显示用户信息和项目信息。我必须输入

include("item.php");
include("user.php");

但这当然会给我一个错误,因为我两次包含数据库类。我知道我可以include_once("database.php");在 item 和 user 类中使用,但我已经阅读了各种线程,最好不要使用 include 和 require 的 _once 版本。

当您需要在多个位置包含数据库类时,避免在 PHP 代码中使用“_once”的最佳做法是什么?

4

3 回答 3

3

我原以为最好的解决方案是根本不在include您的主代码中进行调用。相反,自动加载您的文件,因此仅在需要时才包含它们。

spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.php';
});

现在,如果您的代码得到类似的东西new database();并且database没有加载该类,则此函数将包含classes/database.php. 如果以后再次使用该类,则该类已经被加载,因此不会再次使用自动加载器。

spl_autoload_register有关更多信息,请参阅文档。

于 2013-03-19T10:30:14.787 回答
0

您可以在主脚本中包含数据库,其中包含其他脚本,但是使用include_oncerequire_once是正常的,并且没有任何关键的性能问题。

于 2013-03-19T10:28:23.137 回答
-1

我不确定您对 *_once 的基本恐惧,但是...

include("database.php");
include("item.php");
include("user.php");

一种方法是根据需要调用它并从类中删除包含行。

于 2013-03-19T10:30:04.670 回答