Я просто мокну от автозагрузки 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
Это явно выглядит неправильно, но как это изменить? Почему есть две обратные косые черты?
spl_autoload_extensions('.php');
spl_autoload_register();
Этот код работает только с PHP 5.3 и выше.
Sven,
Я только что ответил на другой вопрос о spl_autoload, попробуйте мой пример кликните сюда
Я надеюсь, что это помогает!
PS:
Также не просто загружайте все .php файлы на вашем пути, это может быть опасно!