首页 >后端开发 >php教程 >如何在 PHP 中将 stdClass 对象转换为自定义类?

如何在 PHP 中将 stdClass 对象转换为自定义类?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-26 09:15:111030浏览

How to Convert stdClass Objects to Custom Classes in PHP?

将 stdClass 对象转换为自定义类

在第三方存储系统仅返回 stdClass 对象的场景中,将它们转换为完整的 -特定类别的成熟对象变得必要。然而,PHP 并没有为此类转换提供直接的转换方法。

类型杂耍

PHP 的类型杂耍功能允许特定的转换,例如:

  • (int) 或 (integer) 表示整数
  • (bool)或 (boolean) 表示布尔值
  • (float)、(double) 或 (real) 表示浮点
  • (string) 表示字符串
  • (array) 表示数组
  • (对象) 表示对象
  • (未设置) 表示 NULL (PHP 5)

这些转换对于处理 stdClass 对象非常宝贵,但它们不会直接创建特定类的实例。

自定义映射器

为了进行全面的转换,可以创建一个Mapper类来执行从stdClass到目标类的转换。这涉及定义将 stdClass 对象的每个属性转换为目标类中相应属性的方法。

Hackish 解决方案(建议谨慎)

作为解决方法,以下代码可以适用于将数组和对象“伪广播”到特定的实例class:

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), '"'), ':')
    ));
}

此解决方案修改数据的序列化表示以表示目标类。不过,由于潜在的副作用,建议谨慎使用此方法。

以上是如何在 PHP 中将 stdClass 对象转换为自定义类?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn