naden.de Bookmarken

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.

Bewertung: najagut
Loading ... Loading ...

Ähnliche Beiträge



1 Kommentar zu Anonyme Objekte mit PHP

Avatar

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.

Schreib einen Kommentar

Fülle das Kommentar-Formular vollständig aus oder melde dich über Twitter oder Facebook an.
Sign in with Facebook

By Teledir Internetanbieter