2011-03-08 4 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 함수에서 디버깅 메시지를 출력하십시오 ... 해당 부분이 작동하는지 확인하십시오. –

+0

여기서는 자동 로딩이 정상적으로 작동합니다. 'includes/Database.class.php'가 실제로 존재하고'Database' 클래스를 정의합니까? 그것에 대해 100 % 확신하십니까? –

+0

파일이 존재하지 않는다면 오류가 발생하여 Database라는 클래스가없는 것 같아요. –

답변

2

Smarty는 자동로드 기능을 spl_autoload_register으로 등록합니다. 자신 만의 자동로드 기능이있는 경우 함께 작동 시키려면 spl_autoload_register으로 등록해야합니다.