Veuillez définir ce qui stdClass
est.
1049
stdClass
est la classe vide générique de PHP, un peu comme Object
en Java ou object
en Python ( Edit: mais pas réellement utilisée comme classe de base universelle; merci @Ciaran pour l' avoir signalé ).
Il est utile pour les objets anonymes, les propriétés dynamiques, etc.
Un moyen simple de considérer la StdClass est une alternative au tableau associatif. Voir cet exemple ci-dessous qui montre comment json_decode()
permet d'obtenir une instance StdClass ou un tableau associatif. En outre, mais non illustré dans cet exemple, SoapClient::__soapCall
retourne une instance StdClass.
<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42
Voir Propriétés dynamiques en PHP et StdClass pour plus d'exemples.
{}
construction de JavaScript .function(StdClass $a, array $params)
vs vérifier si$a
is object etinstanceof
.stdClass
est juste une classe générique «vide» qui est utilisée lors de la conversion d'autres types en objets. Malgré ce que disent les deux autres réponses, cestdClass
n'est pas la classe de base pour les objets en PHP. Cela peut être démontré assez facilement:Je ne crois pas qu'il existe un concept d'un objet de base en PHP
la source
stdClass est une autre grande fonctionnalité PHP. Vous pouvez créer une classe PHP anonyme. Permet de vérifier un exemple.
pensez maintenant que vous avez une autre classe qui va s'initialiser avec un objet page et exécuter la base dessus.
Vous devez maintenant créer un nouvel objet PageShow avec un objet Page.
Ici, pas besoin d'écrire un nouveau modèle de classe pour cela, vous pouvez simplement utiliser stdClass pour créer une classe à la volée.
la source
stdClass
.Il convient également de noter qu'un
stdClass
objet peut également être créé à partir de l'utilisation dejson_decode()
.la source
True
. Les booléens sont en minusculestrue
oufalse
.En utilisant stdClass, vous pouvez créer un nouvel objet avec ses propres propriétés. Prenons l'exemple suivant qui représente les détails d'un utilisateur sous forme de tableau associatif.
Si vous devez représenter les mêmes détails que les propriétés d'un objet, vous pouvez utiliser stdClass comme ci-dessous.
Si vous êtes un développeur Joomla, reportez - vous à cet exemple dans les documents Joomla pour une meilleure compréhension.
la source
Également,
renvoie un objet stdClass - casté automatiquement
J'ai découvert cela aujourd'hui par une faute d'orthographe:
Cool!
la source
stdClass n'est pas une classe ou un objet anonyme
Les réponses incluent ici des expressions qui
stdClass
sont une classe anonyme ou même un objet anonyme. Ce n'est pas vrai.stdClass
est juste une classe prédéfinie régulière. Vous pouvez le vérifier en utilisant l'instanceof
opérateur ou la fonctionget_class
. Rien de spécial ne va ici. PHP utilise cette classe lors de la conversion d'autres valeurs en objet.Dans de nombreux cas, où
stdClass
est utilisé par les programmeurs, le tableau est une meilleure option, en raison des fonctions utiles et du fait que ce cas d'utilisation représente la structure de données et non un véritable objet.la source
Il est également intéressant de noter qu'en utilisant Casting, vous n'avez pas réellement besoin de créer un objet comme dans la réponse donnée par @Bandula. Au lieu de cela, vous pouvez simplement convertir votre tableau en un objet et la classe std est retournée. Par exemple:
Output: again
la source
En fait, j'ai essayé de créer une classe std vide et j'ai comparé la vitesse à une classe vide.
puis a continué à créer 1000 stdClasses et emps ... les classes vides ont été effectuées en environ 1100 microsecondes tandis que les stdClasses ont pris plus de 1700 microsecondes. Donc je suppose que c'est mieux de créer votre propre classe factice pour stocker des données si vous voulez si mal utiliser des objets pour cela (les tableaux sont beaucoup plus rapides pour l'écriture et la lecture).
la source
Objets stdClass en cours d'utilisation
La stdClass vous permet de créer des classes anonymes et avec la conversion d'objets, vous pouvez également accéder aux clés d'un tableau associatif dans le style POO. Tout comme vous accéderiez à la propriété d'objet standard.
Exemple
fera écho
la source
Si vous vouliez créer rapidement un nouvel objet pour contenir des données sur un livre. Vous feriez quelque chose comme ceci:
Veuillez consulter le site - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/ pour plus de détails.
la source
Veuillez garder à l'esprit que 2 stdClasses vides ne sont pas strictement égales. Ceci est très important lors de la rédaction des attentes moqueuses.
la source
Le manuel de php.net contient quelques explications et exemples solides fournis par les utilisateurs de ce qu'est stdClass, j'aime particulièrement celui-ci http://php.net/manual/en/language.oop5.basic.php#92123 , https: // stackoverflow.com/a/1434375/2352773 .
la source
stdclass est une manière dont le php éviter d'arrêter d'interpréter le script quand il y a des données doivent être mises dans une classe, mais malheureusement cette classe n'a pas été définie
Exemple :
Ici, les données seront placées dans les «tâches» prédéfinies. Mais, si nous faisions le code comme ceci:
puis le php mettra les résultats dans stdclass .
simplement phpdit que: regardez, nous avons un bon KIDS [Objets] Ici mais sans Parents. Donc, nous les enverrons dans une garderie pour nourrissonsstdclass :)
la source
Vous pouvez également utiliser
object
pour lancer des tableaux sur un objet de votre choix:Maintenant, pour créer un objet de type
Example
et l'initialiser, vous pouvez effectuer l'une des opérations suivantes:OU
La deuxième méthode est surtout utile pour initialiser des objets avec de nombreuses propriétés.
la source
stClass est une classe vide créée par php lui-même, et ne doit être utilisée que par php, car ce n'est pas seulement une classe "vide", php utilise stdClass pour convertir les tableaux en style objet si vous devez utiliser stdClass, je recommande deux meilleures options : 1- utiliser des tableaux (beaucoup plus rapides que les classes) 2- créer votre propre classe vide et l'utiliser
qu'est-ce qui pousse quelqu'un à penser à utiliser le style d'objet au lieu du style de tableau ???
la source
La raison pour laquelle nous avons stdClass est parce qu'en PHP il n'y a aucun moyen de distinguer un tableau normal d'un tableau associé (comme en Javascript vous avez
{}
pour objet et[]
pour tableau de les distinguer).Cela crée donc un problème pour les objets vides. Prenez cela par exemple.
PHP:
Supposons que vous souhaitiez coder JSON la variable $ c
Supposons maintenant que vous ayez supprimé toutes les clés pour les
$b
rendre vides. Comme il$b
est maintenant vide (vous avez supprimé toutes les clés, vous vous en souvenez?), Il ressemble à[]
ce qui peut être un tableau ou un objet si vous le regardez.Donc, si vous refaites un json_encode, la sortie sera différente
C'est un problème car nous savons
b
qu'il était censé être un tableau associé, mais PHP (ou toute fonction comme json_encode) ne le fait pas.Alors stdClass vient à la rescousse. Reprenant le même exemple
Alors maintenant, même si vous supprimez toutes les clés
$b
et les videz, car il s'agit d'une classe std, cela n'aura pas d'importance et lorsque vous le json_encode vous obtiendrez ceci:C'est aussi la raison pour laquelle
json_encode
etjson_decode
par défaut retourne stdClass.la source