將stdClass 物件轉換為自訂類別
在第三方儲存系統僅傳回stdClass 物件的場景中,將它們轉換為完整的-特定類別的成熟物件變得必要。然而,PHP 並沒有為此類轉換提供直接的轉換方法。
型雜耍
PHP 的型雜耍功能允許特定的轉換,例如:
這些轉換對於處理 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中文網其他相關文章!