小编rre*_*ein的帖子

如何从不完整的类中获取类名?

我们有一个错误处理程序抛出错误:__PHP_Incomplete_Class无法转换为字符串.

错误处理程序当前执行'is_object'测试,对于'Incomplete'对象来说奇怪地是假的.我正在尝试调整错误处理程序,但是我无法解析原始类名,而无需解析重新序列化的版本.

<?php

$o = 'O:14:"BogusTestClass":0:{}';

$c = unserialize($o);

var_dump(
    array(
        'subject' => $c,
        'is_object' => is_object($c), // false !?!?
        'get_class' => get_class($c), // __PHP_Incomplete_Class
        'gettype' => gettype($c),     // 'object'
        'Is instance of?' => $c instanceof __PHP_Incomplete_Class, // true
        'serial' => serialize($c),
    )
);    

// Tried:

var_dump($c->__PHP_Incomplete_Class_Name);
// Error:
//   The script tried to execute a method or access a property of
//   an incomplete object


$refObj = new ReflectionObject($c);
$refProp = $refObj->getProperty('__PHP_Incomplete_Class_Name');
$refProp->setAccessible(true);
var_dump($refProp->getValue($c));
// Error:
//   ReflectionProperty::getValue(): The …
Run Code Online (Sandbox Code Playgroud)

php

2
推荐指数
1
解决办法
2928
查看次数

标签 统计

php ×1