2011-03-08 86 views
0

我在我的includes文件夹中创建了一个名为Database.class.php的数据库类。这是我的代码:自动加载类

require_once 'includes/smarty/Smarty.class.php'; 
require_once 'includes/admin.functions.php'; 

function __autoload($class) { 
    require_once 'includes/'.$class.'.class.php'; 
} 

try { 
    $db = Database::getInstance(); 
} catch (PDOException $e) { die('Error connecting to database.'); } 

这段代码有什么问题吗?前2包括工作正常,我只是得到“类数据库未找到”的错误。

自动加载只在创建新对象时才起作用吗?如果是这样,是否有单身人士的解决方法?或者我做错了什么?

谢谢!

编辑: 当手动包括,它的工作。所以它真的与自动加载有关。

+0

在require_once之前在__autoload函数内打印一条调试消息...确保该部分正在工作。 – 2011-03-08 19:04:10

+0

自动加载应该在这里正常工作。 'includes/Database.class.php'确实存在并且定义了'Database'类吗?你对此100%肯定? – 2011-03-08 19:04:23

+0

我想他会得到一个错误,如果该文件不存在,所以我想也许没有一个名为数据库的类在那里。 – 2011-03-08 19:06:01

回答

2

Smarty注册自动加载功能spl_autoload_register。如果您有自己的自动加载功能,则您必须将其注册为spl_autoload_register,如果您希望它们一起工作。