ReflectionClass更改类的名称并导致致命错误

时间:2015-02-16 12:14:44

标签: php class reflection fatal-error

使用反射来获取类实例时获得一些严重的威胁。代码是如此简单,我真的不知道哪里出错了,似乎反射正在改变类名。所以:

$reflect = new ReflectionClass($class);
print_r($reflect);  
ReflectionClass Object
(
  [name] => Db_Table_Data_Binding
)

return $reflect->newInstance(); // fatal error class Db_Table_Binding Not Found 

即使我将其包装在if语句中以确认:

if($class === "Db_Table_Data_Binding")
{
   return $reflect->newInstance(); // fatal error class Db_Table_Binding 
}

真的不知道这里发生了什么......任何帮助都会很棒。

所以我找出了对于那些可能偶然发现这个错误的人做错的事情。

class Db_Table_Data_Binding{
   protected $bindTypes = array(
      "integer" => Db_Table_Binding::TYPEINT
   );
}

1 个答案:

答案 0 :(得分:0)

这可能是因为您的类的构造函数使用Db_Table_Binding类,并且它位于不同的命名空间中,并且您的自动加载器无法找到类定义。

尝试编写脚本开头写:

use NamespeceWhereUGotThisClass\Db_Table_Binding;