1

在 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 将属于 classBaseClass而不是ExtendedClass!

我有几千个从基类扩展的类,因此__set_state为每个类创建一个方法并不是一个真正的选择。

是否有可能__set_state获得扩展类的类名?

4

1 回答 1

1

实例化被调用的类:

$obj = new static();

代替

$obj = new BaseClass();
于 2013-07-04T18:58:12.223 回答