Comment convertir un objet en tableau en php
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);
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
类,它有三个属性:title
、content
和 publishedAt
。其中,title
和 content
是私有属性,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 )
可以发现,当我们使用 (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);
在上述示例中,我们使用了 ReflectionClass
和 ReflectionProperty
类来获取对象的所有属性,包括公共属性、受保护属性和私有属性。然后通过 setAccessible()
方法设置属性可访问,最终将属性及属性值添加到数组中,输出结果如下:
Array ( [title] => PHP Object Convert Array [content] => PHP 中对象转换数组的实现 [publishedAt] => 2021-09-14 15:10:34 )
总结来看,PHP 提供了多种方式来将对象转换成数组,常用的方式是使用强制类型转换符 (array)
。同时,我们也可以选择性地将私有属性和受保护属性添加到数组中,可以通过 ReflectionClass
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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.

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é.

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é.

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

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.

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.
