首頁 >後端開發 >php教程 >如何在 PHP 中將 stdClass 物件轉換為自訂類別?

如何在 PHP 中將 stdClass 物件轉換為自訂類別?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-26 09:15:111016瀏覽

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