Anonyme Objekte mit PHP
28. Februar 2008 | In: Php
PHP bietet zwei simple Möglichkeiten um anonyme Objekte zu erzeugen. Diese sind immer dann sinnvoll nutzbar, wenn eine Funktion einen komplexen Wert zurückgibt, man aber nicht mit einem assoziativen Array arbeiten möchte.
Erzeugt wird das Object …
1. über einen Cast vom Type “Object”
$a = (object)null; var_dump( $a ); object(stdClass)#1 (0) { } |
2. über die Klasse stdClass
$b = new stdClass(); var_dump( $b ); object(stdClass)#2 (0) { } |
Die Ausgabe von var_dump() zeigt, das in beiden Fällen ein Objekt vom gleichen Typ erzeugt wird. Ich ziehe die 2. Methode vor, da diese besser zu schreiben und lesen ist als der Typecast.
Die so erzeugen Objekte machen nur Sinn, wenn man sie mit Eigenschaften versehen kann. Das geht wie sonst auch mit Objekten in PHP.
$b = new stdClass(); $b->id = 89; $b->timestamp = time(); var_dump( $b ); object(stdClass)#2 (2) { ["id"]=> int(89) ["timestamp"]=> int(1204223269) } |
Nutz man ein so erzeugtes Objekt als Rückgabewert einer Funktion, so sieht das wie folgt aus:
function Foo( $a, $b ) { $result = new stdClass(); $result->max = max( $a, $b ); return( $result ); } var_dump( Foo( 2, 3 ) ); object(stdClass)#3 (1) { ["max"]=> int(3) } |
Eine Möglichkeit, anonyme Objekte mit Methoden zu versehen habe ich bis dato leider nicht herausfinden könne.

1 Kommentar zu Anonyme Objekte mit PHP
Fabian
16. November 2009 um 22:48:03
Mit create_function() bzw. mittels Lambda-Funktionen in PHP 5.3 sollten Methoden in stdClass kein Problem darstellen.