4.27 Echte Objekte als Schlüssel von Arrays verwenden

Problem

Sie möchten echte Objekte als Schlüssel von Arrays verwenden, was PHP nicht erlaubt. Ein Workaround, wie die Serialisierung der Objekte in eine Zeichenkette, die dann als eindeutiger Identifier genutzt wird, kommt für Sie nicht infrage.

Lösung

Die Standard PHP Library (SPL) stellt ab PHP 5.3 die Klasse SplObjectStorage zur Verfügung. Diese können Sie als Map-Datenstruktur nutzen und Objekte als Schlüssel verwenden:

class Foo {}
class Bar {}

$s1 = new SplObjectStorage();
$o1 = new StdClass;
$o2 = new Foo;
$o3 = new Bar;
$s1[$o1] = 'Wert $o1';
var_dump($s1->contains($o1));
var_dump($s1->contains($o2));
var_dump($s1->contains($o3));
bool(true)
bool(false)
bool(false) $s2 = new SplObjectStorage(); ...

Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.