【发布时间】:2015-05-26 08:13:48
【问题描述】:
我在动态调用同一命名空间中的类时遇到问题。
为了简化我的系统:
我有这个命名空间结构:
core
core\classes
core\classes 中有两个类(在两个文件中,之前都包含):
class AUTO_LOAD
{
public function regSingleton($event)
{
$temp_event = $event;
//$event = '_' . $event;
//global $$event;
//$$event = $temp_event::newInst(); // the old version without namespaces - this worked
HELPER::varDump(SYSTEM::newInst()); // this works
HELPER::varDump($temp_event::newInst()); // this doesn't work
exit;
}
}
和
class SYSTEM
{
// Some code;
}
然后实例化AUTO_LOAD:
$_AUTO_LOAD = new AUTO_LOAD;
$_AUTO_LOAD->regSingleton('SYSTEM');
输出:
对象(core\classes\SYSTEM)#2 (3) {}
致命错误:在中找不到类“SYSTEM” .../system/includes/classes/class.autoload.php
正如您在上面看到的,如果我尝试调用 SYSTEM::newInst()(静态)它可以工作,但如果我尝试动态运行它($temp_event::newInst())它不会。
通过'\\' . __NAMESPACE__ . '\\' . $temp_event::newInst(); 和'\\core\classes\\' . $temp_event::newInst(); 直接调用都不起作用(相同的输出)。
错误在哪里(推理)?提前感谢您的帮助!
PS:我已经阅读了PHP namespace with Dynamic class name,但我看不出有什么区别?
【问题讨论】:
标签: php class namespaces dynamically-generated