Maison > développement back-end > Problème PHP > Comment créer un objet PHP de classe non définie

Comment créer un objet PHP de classe non définie

醉折花枝作酒筹
Libérer: 2023-03-10 22:00:02
avant
1639 Les gens l'ont consulté

En PHP, si la classe n'est pas préparée à l'avance et que vous devez créer un objet de classe non définie, nous pouvons utiliser les trois méthodes suivantes : 1. "new stdClass()", "new class{}(object) " et "(objet)[]". L'éditeur le présentera en détail ci-dessous.

Comment créer un objet PHP de classe non définie

En PHP, si la classe n'est pas préparée à l'avance et qu'il faut créer un objet de classe non définie, on peut utiliser les trois méthodes suivantes :

  • nouvelle classe std()

  • nouvelle classe{}

  • (objet)[]

Le premier est stdClass. Cette classe est un modèle de classe vide et est le mot-clé réservé interne et le nom de classe. Elle peut être considérée comme la classe de base Object en Java. En Java, toutes les classes héritent naturellement de la classe de base Object. Le stdClass en PHP est un modèle de classe complètement vide. Votre propre classe nouvellement créée n’en est pas une sous-classe. Mais vous pouvez utiliser ce modèle de classe pour créer un objet de sa propre classe non définie. Bien entendu, il n’y a rien à l’intérieur de cet objet. Et

 $a = new stdClass();
var_dump($a);
Copier après la connexion

nouvelle classe{} ? Ceux qui développent depuis un certain temps et ont été exposés aux js front-end et à d'autres langages dynamiques devraient être capables de deviner qu'il s'agit d'une classe anonyme. Généralement très courant dans les objets paramètres. Les objets qu'il crée peuvent avoir des méthodes d'attribut.

 $b = new class{
    public $p = 1;
};
var_dump($b);
Copier après la connexion

La dernière chose que nous voyons est d'utiliser un tableau à convertir en un objet pour générer un objet.

 $c = (object)[
    'p' => 1
];
var_dump($c);
Copier après la connexion

Évidemment, l'objet généré par la coercition de tableau est du même type que le premier objet, et il peut avoir des attributs ou non. Cependant, cela ne peut pas prendre de méthodes.

Les objets générés par la méthode de coercition de tableau sont très intuitifs et faciles à comprendre. S'il s'agit simplement d'une encapsulation d'objets d'attribut, l'utilisation de cette méthode sera plus élégante et plus confortable. La génération d'objets complexes peut être générée à l'aide de classes anonymes. Pour certains objets qui n'ont besoin que d'espaces réservés, vous pouvez utiliser la méthode stdClass. Bien entendu, utiliser un tableau vide est également très pratique.

Il convient de noter que la coercition des tableaux doit être conforme aux règles de conversion de type. Par exemple, le problème des indices numériques.

Dans le développement quotidien, nous utilisons souvent ces fonctions lors de l'utilisation de certaines interfaces ou frameworks ORM de bases de données. Par exemple, l'insertion et la modification de certains frameworks ORM nécessitent l'arrivée d'objets contenant uniquement des attributs. À l'heure actuelle, vous pouvez utiliser la méthode ci-dessus pour générer des objets de manière flexible sans définir complètement le modèle de classe.

Code de test :

https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/%E4%BC%98%E9%9B%85%E5%9C%B0%E5%88%9B%E5%BB%BA%E6%9C%AA%E5%AE%9A%E4%B9%89PHP%E5%AF%B9%E8%B1%A1.php
Copier après la connexion

Apprentissage recommandé : Tutoriel vidéo php

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!

Étiquettes associées:
source:segmentfault.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal