Ist $order ein Objekt der Klasse order?

Weil ich gerade drübergestolpert bin und erstmal etwas googlen musste, hier als kleine Gedankenstütze für mich (und für alle, die es interessiert :-)

Es kommt ja häufiger mal vor, dass PHP – aus welchen Gründen auch immer – eine Variable mal als Objekt der (Standard-)Klasse stdClass erstellt. Wieso das so ist? Keine Ahnung – ich hatte bisher auch keine Zeit das zu untersuchen. Wenn ihr es wisst, bitte gleich erklären, danke :-) Um nun eine bestimmte Methode der (gewünschten) Klasse aufzurufen, ohne einen Fatal error zu erhalten, ist es ratsam, zuerst zu prüfen, ob die Variable auch vom richtigen Typ (bzw. von der richtigen Klasse) ist.

Die Funktion, um zu prüfen, ob ein Objekt eine Instanz einer bestimmten Klasse ist, heißt ganz einfach instanceof. Wer noch Anwendungen vor PHP 5 einsetzt, muss auf die Funktion is_a zurückgreifen. Die Beschreibung zu instanceof ist leider sehr versteckt und nicht so ganz einfach in der sehr umfassenden PHP-Dokumentation zu finden.

Beispiele:

if( $order instanceof order ) {
$order->doSomething();
}

oder mit is_a

if( is_a( $order, ‚ order‘ ) {
$order->doSomething();
}

Für mich ist die instanceof-Nutzung deutlich hübscher und auch logischer, denn immerhin ist es objektorientiert (klar, man könnte sagen, das ist mit Klassen auch der Fall). Objektorientiert ist aber nicht nur bequem sondern auch sehr elegant – finde ich jedenfalls. Das hat auch Stefan Priebsch auf dem PHP World Kongress so vertreten, Tobias Schlitt hat das fürs Unit-Testen mit PHPUnit nur bestätigt.

Über Markus Zierhut

Life Is What You Make It!
Dieser Beitrag wurde unter Arbeit, PHP abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

2 Antworten zu Ist $order ein Objekt der Klasse order?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.