2011-03-08 64 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,如果您希望它們一起工作。