У меня есть файл с именем 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 не найден.
Без пространства имен все работает нормально. Как это исправить?
Заранее спасибо.
Вы должны заменить \
с 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 с автозагрузкой?
Других решений пока нет …