Bitte definieren Sie, was stdClass
ist.
Antworten
Zu viele Anzeigen?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.
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.
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();
- See previous answers
- Weitere Antworten anzeigen