将PHP数组强制转换为用户对象?

将PHP数组强制转换为用户对象?,php,object,casting,Php,Object,Casting,我有一个从其他来源检索的数组。然后需要将该数组强制转换到我创建的自定义类中 我不能使用stdObject的原因是因为我的类有一个自定义的\uu get以及许多方便的方法 我基本上需要这样的东西: $obj = (MyClass) $array; 这看起来是不可能的,它会导致语法错误。创建一个构造函数,获取一个数组并从该数组中构造对象。有一种方法我以前使用过,但更像是一种技巧,您可以将数组强制转换为stdclass,然后将其序列化为字符串,然后使用字符串操作更改类名,然后取消序列化对象: fun

我有一个从其他来源检索的数组。然后需要将该数组强制转换到我创建的自定义类中

我不能使用stdObject的原因是因为我的类有一个自定义的
\uu get
以及许多方便的方法

我基本上需要这样的东西:

$obj = (MyClass) $array;

这看起来是不可能的,它会导致语法错误。

创建一个构造函数,获取一个数组并从该数组中构造对象。

有一种方法我以前使用过,但更像是一种技巧,您可以将数组强制转换为stdclass,然后将其序列化为字符串,然后使用字符串操作更改类名,然后取消序列化对象:

function ClassCaster($class, $object)
{
    return unserialize(preg_replace('/^O:\d+:"[^"]++"/', 'O:' . strlen($class) . ':"' . $class . '"', serialize($object)));
}

class SampleClass
{
    public function __wakeup(){ /*Generic wake up from serialization */}
}

$array = array(/* ... */);
$SampleClass = ClassCaster("SampleClass",(object)$array);

这不是一个很好的方法,但我相信这是唯一的破解方法。

也许你可以用
MyClass::\uu set\u state($array)
有趣的问题!这可能是不可能的,不是我。我投了赞成票:)不过这个解决方案太难了。是的,但至少有可能,谢谢你的支持vote@nwinkler:当然可以。检查文档:可以快速完成“构建”