我正在为 php cms 编写一个模块。在函数(回调)中,我可以访问来自框架代码的对象。
该对象的类型为__PHP_Incomplete_Class
因为在会话开始之前没有包含所需的头文件。如果不破解核心 cms 代码,我就无法包含它。
我想知道是否可以访问对象属性(强制转换为数组不起作用)。我问这个是因为我可以看到这些值var_dump()
但使用$object->var
我总是得到空值。
当您取消序列化尚未包含的类的对象时,会出现此问题。
例如,如果您在包含该类之前调用 session_start。
PHPIncompleteClass 对象无法直接访问,但可以使用 foreach、serialize 和 gettype。
使用 PHPIncompleteClass 对象调用 is_object 将导致 false。
因此,如果您在会话中找到“__PHP_Incomplete_Class”对象,并且在 session_load 之后包含了您的类,则可以使用此函数:
function fixObject (&$object)
{
if (!is_object ($object) && gettype ($object) == 'object')
return ($object = unserialize (serialize ($object)));
return $object;
}
这将产生一个可用的对象:
fixObject($_SESSION['member']);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)