我正在Worpdress插件中试验PHP名称空间。该插件包含一个加载程序文件,该文件设置spl\\U自动加载功能,然后根据当前页面请求是否为“admin()”,实例化不同的控制器。
[WP\\u PLUGIN\\u DIR]/lhes\\u实验/加载程序。php
use lhes\\system\\controllers as sys;
set_include_path(\'./wp-content/plugins/lhes_experiment/\' . PATH_SEPARATOR . get_include_path());
spl_autoload_extensions(".php"); // comma-separated list
spl_autoload_register( \'spl_autoload\' );
$config = array( ... );
if( is_admin() ){
error_log( var_export( new sys\\experiment( ), true ), 0 );
}else{
error_log( var_export( new sys\\experiment( ), true ), 0 );
}
[WP\\U PLUGIN\\u DIR]/lhes\\U实验/lhes/系统/控制器/实验。php
namespace lhes\\system\\controllers;
class experiment extends test{
public $property;
function __construct( ){
$this->property = \'owls\';
}
}
[WP\\U插件\\U目录]/lhes\\U实验/lhes/系统/控制器/测试。php
namespace lhes\\system\\controllers;
class test{
public $test;
function __construct( ){
$this->test = \'hi\';
}
}
当请求
not 和管理页面,代码按预期运行,错误日志显示:
[23-Jan-2013 12:55:27 UTC] lhes\\system\\controllers\\experiment::__set_state(array(
\'property\' => \'owls\',
\'test\' => \'hi\',
))
但是,当请求
is 对于管理页面,完全相同的代码不起作用:
[23-Jan-2013 12:56:17 UTC] PHP Fatal error: Class \'lhes\\system\\controllers\\test\' not found in C:\\Program Files (x86)\\Zend\\Apache2\\htdocs\\wp-content\\plugins\\lhes_experiment\\lhes\\system\\controllers\\experiment.php on line 4
我花了一个多小时在谷歌上搜索这个问题,但似乎什么也找不到。如果有人对为什么会发生这种情况有任何想法的话,我真的很想得到一些建议。