stdClass オブジェクトの型キャストと変換
PHP では、使用されるストレージ システムが排他的に stdClass オブジェクトを返すため、それらを完全なオブジェクトに変換することが困難になります。 -特定のクラスの本格的なオブジェクト。この記事では、この変換を実現する可能性について検討します。
限定された変換のための型ジャグリング
PHP の型ジャグリング メカニズムにより、かっこキャストを通じて stdClass オブジェクトを特定の型に変換できます。ただし、これは、整数、ブール値、浮動小数点、文字列、配列、オブジェクトなどの基本的な型に限定されます。
マッピングとオブジェクトの複製
stdClass オブジェクトを変換するには特定のクラスのオブジェクトに変換するには、マッピングまたはクローン作成のアプローチが必要です。 stdClass プロパティを目的のクラス プロパティに変換するマッピング関数を作成できます。あるいは、OOP の __clone() メソッドを利用して、同じプロパティを持つ別のクラスのオブジェクトを作成することもできます。
ハッキングなアプローチ: シリアル化のトリック
詳細型破りな方法には、配列を特定のクラスのオブジェクトに変換するコード スニペットを適用することが含まれます。 stdClass オブジェクトのシリアル化されたデータを操作してからシリアル化を解除すると、結果は実質的に目的のクラスのインスタンスになります。ただし、このアプローチは潜在的な副作用があるため、慎重に使用する必要があります。
オブジェクト変換のサンプル コード
function objectToObject($instance, $className) { return unserialize(sprintf( 'O:%d:"%s"%s', strlen($className), $className, strstr(strstr(serialize($instance), '"'), ':') )); }
stdClass オブジェクトと目的のクラス名を渡すことによってこの関数は引数として、指定されたクラスのオブジェクトを返します。
以上がPHP で stdClass オブジェクトを特定のクラスに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。