如何避免使用include_once

时间:2013-03-19 10:26:04

标签: php optimization include

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

database.php
item.php
user.php

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

我原本认为最好的解决办法就是不要在主代码中进行include次调用。而是自动加载您的文件,因此只有在需要时才会包含它们。

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

现在,如果您的代码类似于new database();并且database类未加载,则此函数将包含classes/database.php。如果将来再次使用该类,则该类已经加载,因此自动加载器不会再次使用。

有关详细信息,请参阅spl_autoload_register的文档。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

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

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