автозагрузка spl: класс не найден — проблема с пространством имен?

Я просто мокну от автозагрузки PHP. Я на самом деле думаю, что получил основы, но почему-то это все равно не сработает.

Я получил следующую структуру каталогов:

myLib
-bootstrap.php
-sven
-project
project.php

bootstrap.php это файл, который будет включен для использования библиотеки. В этом файле у меня просто есть следующий код:

spl_autoload_extensions('.php');
spl_autoload_register();

$var = new \sven\project\project();
$var->init();

И в project.php:

namespace sven\project;

class project {
public function init() {
echo 'It works!';
}
}

То, как используется автозагрузчик, насколько я понимаю, базовый автозагрузчик PHP должен преобразовывать пространство имен в каталоги, а затем искать php, содержащий класс.

Вместо отображения «Это работает!» Выдается фатальная ошибка. К сожалению, я не могу точно сказать, что это за ошибка, потому что CMS только сообщает мне, что произошла фатальная ошибка.
Но с такой простой структурой я уверен, что ошибка довольно проста и ее легко найти для того, кто знает, как она работает.

Где я ошибаюсь в этом примере — правильно ли я описал, как автозагрузчик должен работать в этой настройке, или есть недоразумение?

РЕДАКТИРОВАТЬ: Наконец получил журнал ошибок работает:

Fatal error: Class undefined: sven\\project\\project\\project\\project in /xxx/bootstrap.php on line 36

Это явно выглядит неправильно, но как это изменить? Почему есть две обратные косые черты?

0

Решение

spl_autoload_extensions('.php');
spl_autoload_register();

Этот код работает только с PHP 5.3 и выше.

0

Другие решения

Sven,

Я только что ответил на другой вопрос о spl_autoload, попробуйте мой пример кликните сюда

Я надеюсь, что это помогает!

PS:
Также не просто загружайте все .php файлы на вашем пути, это может быть опасно!

0

По вопросам рекламы [email protected]