Maison développement back-end Problème PHP Comment convertir un objet en tableau en php

Comment convertir un objet en tableau en php

Apr 23, 2023 pm 07:29 PM

Dans le développement PHP, nous avons souvent besoin de convertir entre des objets et des tableaux. Les scénarios d'application courants nécessitent de convertir des objets en tableaux. PHP fournit de nombreuses méthodes pour terminer ce processus de conversion, la méthode la plus couramment utilisée consiste à convertir l'objet en tableau via un lanceur.

En PHP, lorsque nous convertissons un objet en tableau, le nom de l'attribut de l'objet est automatiquement utilisé comme nom de clé et la valeur de l'attribut est stockée dans le tableau en tant que valeur de clé. Dans le même temps, PHP peut également convertir de manière sélective les propriétés privées, protégées et publiques d'un objet.

Apprenons à convertir des objets en tableaux à travers des exemples :

class BlogPost {
    private $title;
    private $content;
    protected $publishedAt;

    public function __construct($title, $content) {
        $this->title = $title;
        $this->content = $content;
        $this->publishedAt = date('Y-m-d H:i:s');
    }
}

$post = new BlogPost('PHP Object Convert Array', 'PHP 中对象转换数组的实现');
$array_post = (array) $post; // 将对象转换为数组
print_r($array_post);
Copier après la connexion

Dans l'exemple ci-dessus, nous avons défini une classe BlogPost, qui possède trois attributs : title, contenu et publishedAt. Parmi eux, title et content sont des propriétés privées, et publishedAt est une propriété protégée. Dans le constructeur de la classe, nous définissons les propriétés $title et $content, et par défaut définissons la propriété $publishedAt à l'heure actuelle. . BlogPost 类,它有三个属性:titlecontentpublishedAt。其中,titlecontent 是私有属性,publishedAt 是受保护属性。在类的构造函数中,我们设置了 $title$content 属性,并默认将 $publishedAt 属性设置为当前时间。

接着,我们实例化了 BlogPost 类,并将它强制类型转换为数组 $array_post。最后,我们使用 print_r 函数打印 $array_post 数组的内容,可以看到输出结果如下:

Array
(
    [BlogPosttitle] => PHP Object Convert Array
    [BlogPostcontent] => PHP 中对象转换数组的实现
    [*publishedAt] => 2021-09-14 15:10:34
)
Copier après la connexion

可以发现,当我们使用 (array) 进行类型转换时,对象的属性名会被添加类名作为前缀。这是因为在 PHP 中,相同的属性名只能出现一次,为了防止属性名冲突,PHP 自动添加了类名做前缀。同时,我们也可以通过数组的方式来访问对象的属性,比如 echo $array_post['BlogPosttitle']; 可以输出 PHP Object Convert Array

需要注意的是,当对象中有私有属性和受保护属性时,它们在转换为数组后默认是不可访问的,但是如果我们想将它们添加到数组中,可以通过 ReflectionClass 类来实现:

class BlogPost {
    private $title;
    private $content;
    protected $publishedAt;

    public function __construct($title, $content) {
        $this->title = $title;
        $this->content = $content;
        $this->publishedAt = date('Y-m-d H:i:s');
    }
}

$post = new BlogPost('PHP Object Convert Array', 'PHP 中对象转换数组的实现');

$reflection_class = new ReflectionClass($post);
$properties = $reflection_class->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE); // 获取所有属性

$array_post = [];
foreach ($properties as $property) {
    $property->setAccessible(true); // 设置属性可访问
    $array_post[$property->getName()] = $property->getValue($post); // 将属性及属性值添加到数组中
}

print_r($array_post);
Copier après la connexion

在上述示例中,我们使用了 ReflectionClassReflectionProperty 类来获取对象的所有属性,包括公共属性、受保护属性和私有属性。然后通过 setAccessible() 方法设置属性可访问,最终将属性及属性值添加到数组中,输出结果如下:

Array
(
    [title] => PHP Object Convert Array
    [content] => PHP 中对象转换数组的实现
    [publishedAt] => 2021-09-14 15:10:34
)
Copier après la connexion

总结来看,PHP 提供了多种方式来将对象转换成数组,常用的方式是使用强制类型转换符 (array)。同时,我们也可以选择性地将私有属性和受保护属性添加到数组中,可以通过 ReflectionClass

Ensuite, nous instancions la classe BlogPost et la convertissons en un tableau $array_post. Enfin, nous utilisons la fonction print_r pour imprimer le contenu du tableau $array_post. Vous pouvez voir le résultat comme suit : 🎜rrreee🎜Vous pouvez le trouver lorsque nous utilisons <. code>(array) Lors de la conversion de type, le nom d'attribut de l'objet sera préfixé par le nom de classe. En effet, en PHP, le même nom d'attribut ne peut apparaître qu'une seule fois. Afin d'éviter les conflits de noms d'attribut, PHP ajoute automatiquement le nom de classe comme préfixe. Dans le même temps, nous pouvons également accéder aux propriétés de l'objet via des tableaux, tels que echo $array_post['BlogPosttitle']; qui peut générer un PHP Object Convert Array. 🎜🎜Il est à noter que lorsqu'il y a des propriétés privées et des propriétés protégées dans l'objet, elles sont inaccessibles par défaut après avoir été converties en tableau, mais si on veut les ajouter au tableau, on peut passer ReflectionClass à réaliser : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons utilisé les classes <code>ReflectionClass et ReflectionProperty pour obtenir toutes les propriétés de l'objet, y compris les propriétés publiques, protégées propriétés et propriété privée. Définissez ensuite l'accessibilité de l'attribut via la méthode setAccessible(), et enfin ajoutez l'attribut et la valeur de l'attribut au tableau. Le résultat de sortie est le suivant : 🎜rrreee🎜En résumé, PHP propose diverses méthodes. pour convertir des objets en tableau, la méthode courante consiste à utiliser l'opérateur de conversion (array). Dans le même temps, nous pouvons également ajouter sélectivement des propriétés privées et des propriétés protégées au tableau, ce qui peut être réalisé via la classe ReflectionClass. Quelle que soit la méthode utilisée, vous pouvez facilement convertir des objets en tableaux pour un meilleur traitement et une meilleure transmission des données d'objet. 🎜

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

OWASP Top 10 PHP: Décrivez et atténue les vulnérabilités communes. OWASP Top 10 PHP: Décrivez et atténue les vulnérabilités communes. Mar 26, 2025 pm 04:13 PM

L'article traite des 10 meilleures vulnérabilités de l'OWASP dans les stratégies PHP et d'atténuation. Les problèmes clés incluent l'injection, l'authentification brisée et les XS, avec des outils recommandés pour surveiller et sécuriser les applications PHP.

PHP 8 JIT (juste à temps) Compilation: comment cela améliore les performances. PHP 8 JIT (juste à temps) Compilation: comment cela améliore les performances. Mar 25, 2025 am 10:37 AM

La compilation JIT de PHP 8 améliore les performances en compilant le code fréquemment exécuté en code machine, bénéficiant aux applications avec des calculs lourds et en réduisant les temps d'exécution.

Téléchargements de fichiers sécurisés PHP: prévention des vulnérabilités liées au fichier. Téléchargements de fichiers sécurisés PHP: prévention des vulnérabilités liées au fichier. Mar 26, 2025 pm 04:18 PM

L'article traite de la sécurisation des téléchargements de fichiers PHP pour éviter les vulnérabilités comme l'injection de code. Il se concentre sur la validation du type de fichier, le stockage sécurisé et la gestion des erreurs pour améliorer la sécurité de l'application.

Encryption PHP: cryptage symétrique vs asymétrique. Encryption PHP: cryptage symétrique vs asymétrique. Mar 25, 2025 pm 03:12 PM

L'article traite du cryptage symétrique et asymétrique en PHP, en comparant leur aptitude, leurs performances et leurs différences de sécurité. Le chiffrement symétrique est plus rapide et adapté aux données en vrac, tandis que l'asymétrique est utilisé pour l'échange de clés sécurisé.

Authentification PHP & amp; Autorisation: mise en œuvre sécurisée. Authentification PHP & amp; Autorisation: mise en œuvre sécurisée. Mar 25, 2025 pm 03:06 PM

L'article examine la mise en œuvre d'authentification et d'autorisation robustes dans PHP pour empêcher un accès non autorisé, détaillant les meilleures pratiques et recommandant des outils d'amélioration de la sécurité.

Limitation du taux de l'API PHP: stratégies de mise en œuvre. Limitation du taux de l'API PHP: stratégies de mise en œuvre. Mar 26, 2025 pm 04:16 PM

L'article traite des stratégies de mise en œuvre de la limitation du taux d'API en PHP, y compris des algorithmes comme un godet de jeton et un seau qui fuit, et en utilisant des bibliothèques comme Symfony / Rate-Limiter. Il couvre également la surveillance, l'ajustement dynamiquement des limites de taux et la main

Validation d'entrée PHP: meilleures pratiques. Validation d'entrée PHP: meilleures pratiques. Mar 26, 2025 pm 04:17 PM

L'article traite des meilleures pratiques pour la validation des entrées PHP pour améliorer la sécurité, en se concentrant sur des techniques telles que l'utilisation de fonctions intégrées, une approche de liste blanche et une validation côté serveur.

Protection PHP CSRF: comment empêcher les attaques du CSRF. Protection PHP CSRF: comment empêcher les attaques du CSRF. Mar 25, 2025 pm 03:05 PM

L'article traite des stratégies pour prévenir les attaques du CSRF dans PHP, notamment en utilisant des jetons CSRF, des cookies de même site et une bonne gestion de session.

See all articles