Автозагрузка классов - PullRequest
       12

Автозагрузка классов

0 голосов
/ 08 марта 2011

Я создал класс Database с именем Database.class.php в моей папке include. Это мой код:

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 включения работают нормально, я получаю только сообщение об ошибке «База данных класса не найдена».

Автозагрузка работает только при создании нового объекта? Если так, есть ли обходной путь для синглетонов? Или я что-то не так делаю?

Спасибо!

EDIT: При ручном включении работает. Так что это действительно связано с автозагрузкой ..

1 Ответ

2 голосов
/ 08 марта 2011

Smarty регистрирует функцию автозагрузки с spl_autoload_register. Если у вас есть собственная функция автозагрузки, вы также должны зарегистрировать ее с spl_autoload_register, если хотите, чтобы они работали вместе.

...