Erste Referenz auf array-element array ist zugänglich wie $obj->$propName

Angenommen, wir haben diesen code (Vereinfachtes Beispiel):

$propertyName = 'items';
$foo = new \stdClass;
$foo->$propertyName = array(42);

An dieser Stelle ich 'd wie zu schreiben, ein Ausdruck, dessen Wert eine Referenz auf den Wert innerhalb des array.

Ist es möglich, dies zu tun? Wenn ja, wie?

Eine Antwort, die "den job machen", sondern ist nicht, was ich 'm suchen, ist dieses:

//Not acceptable: two statements
$temp = &$foo->$propertyName;
$temp = &$temp[0];

Aber warum schreiben Sie es als zwei Aussagen? Gut, denn das wird nicht funktionieren:

//Will not work: PHP's fantastic grammar strikes again
//This is actually equivalent to $temp = &$foo->i
$temp = &$foo->$propertyName[0];

Natürlich &$foo->items[0] ist eine weitere inakzeptable Lösung, denn es behebt den Namen der Eigenschaft.

Falls sich jemand wundert über die seltsamen Anforderungen: ich 'm tun dies in einer Schleife, wo $foo selbst ist ein Verweis auf einige Knoten innerhalb eines Graphen. Jede Lösung unter Einbeziehung $temp würde eine unset($temp) danach, so dass die Einstellung $temp auf die nächste iteration nicht komplett versauen den Graphen; dieser unset Anforderung kann übersehen werden, wenn Sie nicht extrem vorsichtig, um Verweise, so Frage ich mich, ob es einen Weg gibt, um dieser code zu schreiben, so dass es weniger Möglichkeiten für die Einführung eines bug.

InformationsquelleAutor Jon | 2012-06-05
Schreibe einen Kommentar