Maison > développement back-end > tutoriel php > Comment convertir des objets stdClass en classes personnalisées en PHP ?

Comment convertir des objets stdClass en classes personnalisées en PHP ?

Mary-Kate Olsen
Libérer: 2024-11-26 09:15:11
original
1089 Les gens l'ont consulté

How to Convert stdClass Objects to Custom Classes in PHP?

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 :

  • (int) ou (integer) pour entier
  • (bool) ou (booléen) pour booléen
  • (float), (double) ou (real) pour float
  • (string) pour string
  • (array) pour array
  • (objet) pour objet
  • (non défini) pour NULL (PHP 5)

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), '"'), ':')
    ));
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal