Conversion d'objets stdClass en classes personnalisées
Dans un scénario où un système de stockage tiers renvoie uniquement des objets stdClass, les transformant en classes complètes. des objets à part entière d’une classe spécifique deviennent nécessaires. Cependant, PHP ne fournit pas de méthode de conversion simple pour de telles conversions.
Jonglerie de types
Les capacités de jonglerie de types de PHP permettent des conversions spécifiques, telles que :
Ces conversions sont inestimables pour travailler avec des objets stdClass, mais elles ne créent pas directement des instances d'une classe spécifique.
Mappeur personnalisé
Pour une conversion complète, une classe Mapper peut être créée pour effectuer le transtypage de stdClass vers une classe cible. Cela implique de définir des méthodes qui traduisent chaque propriété de l'objet stdClass en propriété correspondante dans la classe cible.
Solution hackish (prudence conseillée)
En guise de solution de contournement, le le code suivant peut être adapté pour "pseudocaster" des tableaux et des objets vers des instances d'une classe spécifique :
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), '"'), ':') )); }
Cette solution modifie le représentation sérialisée des données pour représenter la classe cible. Cependant, il est recommandé d'utiliser cette approche avec prudence en raison des effets secondaires potentiels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!