Maison  >  Article  >  développement back-end  >  Comment convertir un objet php en tableau

Comment convertir un objet php en tableau

WBOY
WBOYoriginal
2023-05-07 14:52:07838parcourir

En PHP, les objets et les tableaux sont des types de données très importants, et ils ont leurs propres caractéristiques et utilisations. Au cours du processus de développement, nous devons souvent convertir des objets en tableaux pour faciliter la transmission et le traitement des données. Cet article présentera en détail les méthodes de conversion entre objets PHP et tableaux et leurs précautions.

1. Concepts de base des objets PHP

En PHP, un objet est la base de la programmation orientée objet. C'est une entité instanciée à partir d'une classe et peut être manipulée via des méthodes et des propriétés. Voici la syntaxe de base pour créer un objet :

class MyClass {
  public $name;
  public function sayHello() {
    echo "Hello, my name is " . $this->name;
  }
}

$obj = new MyClass();
$obj->name = "PHP";
$obj->sayHello();

Dans le code ci-dessus, nous définissons d'abord une classe MyClass, qui a une propriété publique $name et une méthode publique sayHello, puis nous créons un objet MyClass $obj, et Assign son attribut $name à "PHP", et enfin appeler la méthode sayHello de $obj pour afficher le résultat.

2. Méthode de conversion d'un objet PHP en tableau

La conversion d'un objet en tableau est une opération relativement courante. PHP propose deux méthodes : la conversion de type forcée et la sérialisation.

  1. Conversion de type forcée

Nous pouvons utiliser (array) ou get_object_vars() pour convertir des objets en tableaux. Leur principe est de convertir les attributs de l'objet en paires clé-valeur de tableau correspondantes.

class MyClass {
  public $name = "PHP";
  private $age = 20;
}
$obj = new MyClass();
$arr = (array) $obj;
var_dump($arr); //输出:array(2) { ["name"]=> string(3) "PHP" ["age"]=> int(20) }

$obj = new MyClass();
$arr = get_object_vars($obj);
var_dump($arr); //输出:array(1) { ["name"]=> string(3) "PHP" }

Dans le code ci-dessus, nous définissons d'abord une classe MyClass, qui a un attribut public $name et un attribut privé $age. Ensuite, nous convertissons cet objet en un tableau via (array) et get_object_vars() respectivement. résultats.

Il convient de noter que lors de l'utilisation de la conversion de type forcée, la valeur de l'attribut privé ne peut pas être obtenue et seul l'attribut public peut être converti avec succès. Si nous devons convertir des propriétés privées en tableaux, nous devons utiliser ReflectionClass.

  1. Sérialisation

En PHP, la sérialisation (sérialiser) fait référence au processus de conversion d'un objet ou d'un tableau en chaîne, et la désérialisation (désérialiser) fait référence à la conversion d'une chaîne en objet ou tableau d'origine. Nous pouvons implémenter la sérialisation et la désérialisation via les fonctions serialize() et unserialize().

class MyClass {
  public $name = "PHP";
  private $age = 20;
}
$obj = new MyClass();
$str = serialize($obj); //序列化对象
$arr = unserialize($str); //反序列化数组
var_dump($arr); //输出:object(MyClass)#2 (2) { ["name"]=> string(3) "PHP" ["age":"MyClass":private]=> int(20) }

Dans le code ci-dessus, nous définissons d'abord une classe MyClass, qui a une propriété publique $name et une propriété privée $age. Ensuite, nous sérialisons l'objet $obj dans une chaîne $str, puis nous le désérialisons. $arr et affiche le résultat.

Il convient de noter que lors de l'utilisation de la sérialisation, la valeur de l'attribut privé peut également être obtenue, mais lors de la désérialisation, vous devez vous assurer que la définition de classe de l'objet d'origine existe, sinon unserialize(data): undefined class constant ' xxxx' apparaîtra comme une erreur.

3. Méthode de conversion d'un tableau PHP en objet

En plus de convertir des objets en tableaux, il est souvent nécessaire de convertir des tableaux en objets. En PHP, nous pouvons y parvenir via la fonction cast ou json_decode().

  1. Conversion de type forcée

Pour convertir un tableau en objet, il vous suffit d'attribuer le tableau à l'objet. Le nom d'attribut de l'objet est le nom de clé du tableau et la valeur de l'attribut est la valeur de clé du tableau.

class MyClass {}
$arr = array('name' =>'PHP', 'age' =>20);
$obj = (object) $arr;
var_dump($obj); //输出:object(stdClass)#1 (2) { ["name"]=> string(3) "PHP" ["age"]=> int(20) }

Dans le code ci-dessus, nous créons d'abord une classe MyClass vide, puis définissons un tableau $arr, qui contient deux paires clé-valeur de « nom » et « âge », puis le transposons via (objet) pour l'objet $ obj et affiche le résultat.

  1. json_decode()

Nous pouvons également utiliser la fonction json_decode() pour convertir le tableau en objet, et la méthode d'implémentation est également très simple. Convertissez le tableau en chaîne JSON à l'aide de la fonction json_encode(), puis utilisez la fonction json_decode() pour convertir la chaîne JSON en objet.

class MyClass {}
$arr = array('name' =>'PHP', 'age' =>20);
$json = json_encode($arr);
$obj = json_decode($json);
var_dump($obj); //输出:object(stdClass)#1 (2) { ["name"]=> string(3) "PHP" ["age"]=> int(20) }

Dans le code ci-dessus, nous créons d'abord une classe MyClass vide, puis définissons un tableau $arr, qui contient deux paires clé-valeur de « nom » et « âge », puis le convertissons via la fonction json_encode() est la chaîne JSON $json, puis utilisez la fonction json_decode() pour convertir la chaîne JSON en objet $obj et afficher le résultat. Il convient de noter que json_decode() renvoie par défaut un objet PHP plutôt qu'un tableau.

4. Certaines choses auxquelles il faut prêter attention

Bien que la méthode de conversion entre objets et tableaux soit très simple, il y a encore certaines choses auxquelles il faut prêter attention lors de l'utilisation.

  1. Les propriétés privées ne peuvent pas être obtenues par conversion de type forcée

Lorsque l'objet est converti en tableau, la valeur de la propriété privée ne peut pas être obtenue. Vous devez utiliser ReflectionClass pour l'obtenir, sinon la propriété privée n'est pas accessible dans. ... erreur.

  1. La sérialisation est un processus gourmand en ressources

Bien que la sérialisation soit pratique et simple, lors du traitement de grandes quantités de données, la sérialisation occupera beaucoup de CPU et de mémoire, vous devez donc faire attention à sa consommation.

  1. json_decode() peut renvoyer false

Lorsqu'une erreur se produit lors de l'analyse de la chaîne JSON, la fonction json_decode() peut renvoyer false Si vous devez utiliser ses résultats, vous devez faire attention à l'ajout de la gestion des erreurs.

En bref, la conversion entre objets et tableaux est très couramment utilisée en PHP et peut être réalisée via une conversion de type forcée et une sérialisation. Lorsque le développement d'applications nécessite une utilisation fréquente d'objets et de tableaux, la maîtrise de ces compétences améliorera considérablement l'efficacité du travail.

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:
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