PHP:将var_export与扩展类一起使用?

时间:2013-07-04 18:54:09

标签: php class oop

在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中以某种方式可以获取扩展类的类名吗?

1 个答案:

答案 0 :(得分:1)

实例化被调用的类:

$obj = new static();

而不是

$obj = new BaseClass();