在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”的最佳做法是什么?
答案 0 :(得分:3)
我原本认为最好的解决办法就是不要在主代码中进行include
次调用。而是自动加载您的文件,因此只有在需要时才会包含它们。
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.php';
});
现在,如果您的代码类似于new database();
并且database
类未加载,则此函数将包含classes/database.php
。如果将来再次使用该类,则该类已经加载,因此自动加载器不会再次使用。
有关详细信息,请参阅spl_autoload_register
的文档。
答案 1 :(得分:0)
您可以在主脚本中包含数据库,其中包含其他脚本,但include_once
和require_once
的使用是正常的,并且没有任何严重的性能问题。
答案 2 :(得分:-1)
我不确定你对* _once的基本恐惧,但是......
include("database.php");
include("item.php");
include("user.php");
一种方法是根据需要调用它,并从类中删除include行。