Пространство имен PHP и автозагрузка не работают

У меня есть файл с именем Query.php.

namespace Test
{
class Query
{
public function __construct()
{
printf("Hello, World");
}
}
}

в bootstrap.php я пытаюсь это назвать:

spl_autoload_register(function($className) {
if(file_exists('../folder/'.$className.'.php'))
{
require_once '../folder/'.$className.'.php';
}
});

new \Test\Query();

Результат: Фатальная ошибка: класс Test \ Query не найден.

Без пространства имен все работает нормально. Как это исправить?

Заранее спасибо.

1

Решение

Вы должны заменить \ с DIRECTORY_SEPARATOR,

define('BASE_PATH', realpath(dirname(__FILE__)));
spl_autoload_register(function($className) {
if(file_exists(BASE_PATH . '../folder/'. str_replace('\\', DIRECTORY_SEPARATOR , $class). '.php'))
{
require_once '../folder/'.$className.'.php';
}
});

Предполагается, что ваша структура каталогов следующая

/folder/boostrap.php

/folder/Test/Query.php

Увидеть Как использовать пространства имен PHP с автозагрузкой?

0

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

Других решений пока нет …

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