Задать вопрос

Почему не работает __autoload?

Хотел чтобы класс подгружался при написании:
$core = new \classes\core\router();
Написал функцию:
function __autoload($className){
    $path = str_replace('\\', '/', strtolower($className)).'.php';
	if(file_exists($path)){
		include_once($path);
	}else echo 'Нет файла: '.$path;
}

Но оно выдает мне ошибку...
Fatal error: Class 'classes\core\router' not found
Я понимаю, что ошибка из-за того, что класс называется "router", а не "classes\core\router"...
Как это сделать правильно?
  • Вопрос задан
  • 3223 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Sali_cat
путь не тот указал или файла нету
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
reffy
@reffy
Я молодец.
Рекомендую отказаться от __autoload и использовать spl_autoload_register.

Вот документация -- https://php.net/manual/ru/function.spl-autoload-re...
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Такие вещи надо смотреть поэтапно:

1. Судя по всему у вас просто не срабатывает автолоад. Попробуйте явно её зарегистрировать в стеке php.net/manual/ru/function.spl-autoload-register.php

2. Смотреть что у вас оказывается в path, проверять руками реально ли есть такой файл.
Учтите что на *nix хостингах (в отличии от домашнего windows) регистр символов ЗНАЧИМ

3. Мне кажется странным делать echo в случае ошибки. Логичнее кидать exeption и обрабатывать как то.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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