Frage Was ist stdClass in PHP?


Bitte was definieren stdClass ist.


907
2018-05-31 05:49


Ursprung


Antworten:


stdClass ist PHP generische leere Klasse, ähnlich Object in Java oder object in Python (Bearbeiten: aber nicht wirklich als universelle Basisklasse verwendet; Vielen Dank @Ciaran für  darauf hinweisen).

Es ist nützlich für anonyme Objekte, dynamische Eigenschaften usw.

Eine einfache Möglichkeit, die StdClass zu betrachten, ist eine Alternative zum assoziativen Array. Sehen Sie sich dieses Beispiel an, das zeigt, wie json_decode() ermöglicht es, eine StdClass-Instanz oder ein assoziatives Array zu erhalten. Auch, aber in diesem Beispiel nicht gezeigt, SoapClient::__soapCall Gibt eine StdClass-Instanz zurück.

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

Sehen Dynamische Eigenschaften in PHP und StdClass für mehr Beispiele.


677
2018-05-31 05:55



stdClass ist nur eine generische 'leere' Klasse, die verwendet wird, wenn andere Typen in Objekte umgewandelt werden. Trotz was die anderen zwei Antworten sagen, stdClass ist nicht die Basisklasse für Objekte in PHP. Dies kann relativ einfach demonstriert werden:

class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N';
// outputs 'N'

Ich glaube nicht, dass es ein Konzept für ein Basisobjekt in PHP gibt


1054
2018-06-14 11:13



stdClass ist eine weitere großartige PHP-Funktion. Sie können eine anonyme PHP-Klasse erstellen. Lass uns ein Beispiel sehen.

$page=new stdClass();
$page->name='Home';
$page->status=1;

Jetzt denken Sie, Sie haben eine andere Klasse, die mit einem Page-Objekt initialisiert und Basis darauf ausführt.

<?php
class PageShow {

    public $currentpage;

    public function __construct($pageobj)
    {
        $this->currentpage = $pageobj;
    }

    public function show()
    {
        echo $this->currentpage->name;
        $state = ($this->currentpage->status == 1) ? 'Active' : 'Inactive';
        echo 'This is ' . $state . ' page';
    }
}

Jetzt müssen Sie ein neues PageShow-Objekt mit einem Page-Objekt erstellen.

Hier brauchen Sie keine neue Klassenvorlage zu schreiben. Sie können einfach stdClass verwenden, um eine Klasse im laufenden Betrieb zu erstellen.

    $pageview=new PageShow($page);
    $pageview->show();

80
2017-12-08 09:20



Auch erwähnenswert, ein stdClass Objekt kann aus der Verwendung von erstellt werden json_decode() auch.


58
2017-10-11 19:11



Gleichfalls,

$myNewObj->setNewVar = 'newVal'; 

ergibt ein stdClass -Objekt - Auto Casted

Das habe ich heute durch Schreibfehler herausgefunden:

$GLOBASLS['myObj']->myPropertyObj->myProperty = 'myVal';

Cool!


24
2018-05-19 13:47



Verwenden stdClass Sie können ein neues Objekt mit eigenen Eigenschaften erstellen. Betrachten Sie das folgende Beispiel, das die Details eines Benutzers als assoziatives Array darstellt.

$array_user = array();
$array_user["name"] = "smith john";
$array_user["username"] = "smith";
$array_user["id"] = "1002";
$array_user["email"] = "smith@nomail.com";

Wenn Sie dieselben Details wie die Eigenschaften eines Objekts darstellen müssen, können Sie verwenden stdClass wie nachstehend.

$obj_user = new stdClass;
$obj_user->name = "smith john";
$obj_user->username = "smith";
$obj_user->id = "1002";
$obj_user->email = "smith@nomail.com";

Wenn Sie ein Joomla-Entwickler sind, lesen Sie weiter Dieses Beispiel in den Joomla-Dokumenten zum weiteren Verständnis.


20
2018-04-06 14:21



Eigentlich habe ich versucht, leere stdClass zu erstellen und verglich die Geschwindigkeit mit der leeren Klasse.

class emp{}

dann fuhr ich fort, 1000 stdClasses und emps zu erzeugen ... leere Klassen wurden in ungefähr 1100 Mikrosekunden durchgeführt, während stdClasses über 1700 Mikrosekunden benötigten. Ich denke, es ist besser, eine eigene Dummy-Klasse zum Speichern von Daten zu erstellen, wenn Sie Objekte dafür so schlecht verwenden möchten (Arrays sind viel schneller zum Schreiben und Lesen).


7
2018-03-23 15:02