2014-10-12 4 views
0

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

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

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

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

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 только сообщает мне, что произошла фатальная ошибка.
Но с такой простой структурой, я уверен, что ошибка довольно простая и легко найти для тех, кто знает, как это работает.

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

EDIT: Наконец получил ход журнала ошибок:

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

Ну, я бегу 5.6.99 & hhvm 3.3.0 ;-) – Sven

0

Sven,

Я просто ответил на другой вопрос о spl_autoload, попробуйте мой пример click here

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

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