请参阅有关可能转换的类型杂耍的手册。
允许的强制转换是:
- (int), (整数) - 转换为整数
- (布尔),(布尔值) - 强制转换为布尔值
- (浮点),(双),(真实)- 投射到浮点
- (字符串)- 转换为字符串
- (数组)- 强制转换为数组
- (对象) - 强制转换为对象
- (未设置)- 转换为 NULL (PHP 5)
您必须编写一个映射器,用于将转换从 stdClass 转换为另一个具体类。应该不会太难做到。
或者,如果您心情不好,可以改编以下代码:
function arrayToObject(array $array, $className) {
return unserialize(sprintf(
'O:%d:"%s"%s',
strlen($className),
$className,
strstr(serialize($array), ':')
));
}
它将数组伪转换为特定类的对象。这的工作原理是首先序列化数组,然后更改序列化的数据,使其表示某个类。然后,结果将取消序列化为此类的实例。但就像我说的,这很笨拙,所以期待副作用。
对于对象到对象,代码将是
function objectToObject($instance, $className) {
return unserialize(sprintf(
'O:%d:"%s"%s',
strlen($className),
$className,
strstr(strstr(serialize($instance), '"'), ':')
));
}