Используя spl_autoload () не способный загрузить класс

Я играю вокруг с функциональностью автозагрузки SPL и, кажется, пропускаю что-то важное, поскольку я в настоящее время не могу заставить это работать. Вот отрывок, который я в настоящее время использую:

// ROOT_DIRECTORY translates to /home/someuser/public_html/subdomains/test
define('ROOT_DIRECTORY', realpath(dirname(__FILE__)));
define('INCLUDE_DIRECTORY', ROOT_DIRECTORY . '/includes/classes/');
set_include_path(get_include_path() . PATH_SEPARATOR . INCLUDE_DIRECTORY);
spl_autoload_extensions('.class.php, .interface.php, .abstract.php');
spl_autoload_register();

Когда я echo get_include_path() Я действительно получаю путь, который я ожидал:

// Output echo get_include_path();
.:/usr/lib/php:/usr/local/lib/php:/home/someuser/public_html/subdomains/test/includes/classes/

Однако, когда я выполняю код, я получаю это сообщение об ошибке:

Фатальная ошибка: spl_autoload () [function.spl-автозагрузка]: Запрос Класса не мог быть загружен в/home/someuser/public_html/subdomains/test/contact.php на строке 5

Request.class.php находится определенно в/home/someuser/public_html/subdomains/test/includes/classes/каталоге.

Что я пропускаю?

8
задан hakre 2 June 2012 в 09:45
поделиться

2 ответа

Есть комментарий (анонимный) к http://www.php.net/manual/en/function.spl-autoload-register.php#96804 , который может относиться к вашей проблеме: spl_autoload_register (), похоже, не очень хорошо работает с camelcase, и в вашем случае вы можете попытаться найти request.class.php вместо Request ...

20
ответ дан 5 December 2019 в 08:22
поделиться

Путь, где должен находиться класс, похоже, не совпадает с путем, где вы их ожидаете. Сравните

.:/usr/lib/php:/usr/local/lib/php:/home/someuser/public_html/subdomains/test/includes/classes/

с

/home/someuser/public_html/subdomains/test/

Разница в том, что ваш класс находится не в includes/classes/, как того требует SPL, а несколькими каталогами выше.

0
ответ дан 5 December 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: