2014-10-10 52 views
1

我有一个名为Query.php的文件。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(); 

结果:致命错误:未找到类测试\查询。

没有命名空间它工作正常。如何解决它?

在此先感谢。

+0

哪里是你的'spl_autoload_register'实现?它不会奇迹般地知道从哪里加载类。如果你有一个,那就是错误所在。 – 2014-10-10 13:40:18

+0

@JuanMendes,对不起。我添加了它。 – 2014-10-10 13:41:49

+0

你真的有一个名为文件夹的文件夹? – 2014-10-10 13:46:04

回答

0

您必须用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

How do I use PHP namespaces with autoload?

相关问题