1163 Stimmen

Was ist stdClass in PHP?

Bitte definieren Sie, was stdClass ist.

1173voto

Ciaran McNulty Punkte 18410

stdClass ist nur eine generische "leere" Klasse, die verwendet wird, wenn andere Typen in Objekte umgewandelt werden. Ungeachtet dessen, was die anderen beiden Antworten sagen, stdClass es no die Basisklasse für Objekte in PHP. Dies lässt sich recht einfach demonstrieren:

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

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

856voto

Alex Martelli Punkte 805329

stdClass ist die generische leere Klasse von PHP, ähnlich wie Object in Java oder object in Python ( Bearbeiten: aber nicht tatsächlich als universelle Basisklasse verwendet; dank @Ciaran für darauf hinweisend ).

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

Eine einfache Möglichkeit, die StdClass zu betrachten, ist als Alternative zum assoziativen Array. Das folgende Beispiel zeigt, wie json_decode() erlaubt es, eine StdClass-Instanz oder ein assoziatives Array zu erhalten. Auch, aber nicht in diesem Beispiel 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

Véase Dynamische Eigenschaften in PHP und StdClass für weitere Beispiele.

115voto

Mrinmoy Ghoshal Punkte 2754

StdClass ist eine weitere großartige PHP-Funktion. Sie können eine anonyme PHP-Klasse erstellen. Schauen wir uns ein Beispiel an.

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

jetzt denken Sie eine andere Klasse, die mit einer Seite Objekt initialisieren und ausführen Basis auf sie haben.

<?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';
    }
}

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

Hier ist es nicht nötig, eine neue Klassenvorlage zu schreiben. Sie können einfach stdClass verwenden, um eine Klasse on the fly zu erstellen.

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

64voto

mdpatrick Punkte 1082

Ebenfalls erwähnenswert ist eine stdClass Objekt kann durch die Verwendung von json_decode() auch.

29voto

Gleichermaßen,

$myNewObj->setNewVar = 'newVal'; 

ergibt ein stdClass-Objekt - auto casted

Das habe ich heute durch einen Rechtschreibfehler herausgefunden:

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

Super!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X