在PHP中,我正在尝试使用var_export
,但我无法使用扩展类:
class BaseClass {
public $a = 1;
public static function __set_state($array) {
//is it possible to get the classname of the extended class here?
$obj = new BaseClass();
foreach($array as $k => $v) {
$obj->$k = $v;
}
return $obj;
}
}
class ExtendedClass extends BaseClass {
public $b = 2;
}
$object = new ExtendedClass();
var_dump($object);
$serialized_object = var_export($object, true);
eval('$object2 = ' . $serialized_object. ';');
echo "<br/>";
var_dump($object2);
$ object2将属于BaseClass
类,而不是ExtendedClass
!
我有几千个从基类扩展的类,因此为每个类创建一个__set_state
方法实际上不是一个选项。
在__set_state
中以某种方式可以获取扩展类的类名吗?
答案 0 :(得分:1)
实例化被调用的类:
$obj = new static();
而不是
$obj = new BaseClass();