Motto: Make objects to work as arrays.
Beispiel:
<?php /*Das ArrayObject kann mittels Array oder Object Parameter erstellt werden, also erzeugen wir ein Array */ $team = array( 'teamleiter' => 'Hans Dampf', 'vize' => 'Tommy Doof', 'mitarbeiter' => 'Detlev Dick', 'assistentin' => 'Hanna Ungeschickt' ); //ArrayObject erzeugen $teamObject = new ArrayObject($team, ArrayObject::ARRAY_AS_PROPS); //Einen Wert ausgeben echo $teamObject->teamleiter; //Wert hinzufügen $teamObject->azubi = 'Moritz Schüler';
Der zweite Parameter als „ArrayObject::ARRAY_AS_PROPS“ bedeutet, dass auf die Einträge als Eigenschaften zugegriffen werden kann (read/write). Ein Beispiel wäre $teamObject->azubi = ‚Moritz Schüler‘; aus dem obigen Beispiel.
Das würde bei ArrayObject::ARRAY_AS_PROPS nicht so funktionieren, dass diese in einer Ausgabe des Arrays enthalten wären. Dort haben die Objekte das normale Verhalten beim Zugriff als Liste (var_dump, foreach o.ä.).
const integer STD_PROP_LIST = 1 ; const integer ARRAY_AS_PROPS = 2 ;
Achtung bei einfachen Array Funktionen. Diese können nicht ohne Weiteres angewendet werden:
//wird nicht funktionieren $falsch = array_values($teamObject); //stattdessen $teamArray = (array) $teamObject; $richtig = array_values($teamArray);
Wichtige Funktionen:
$arrayobject = new ArrayObject(array('blau','grau','gelb'));
//append: Fügt einen neuen Wert als letztes Element hinzu.
//Achtung: Nur benutzbar, wenn ArrayObject aus Array
$arrayobject->append('lila');
//asort: Sortiert nach Werten, Schlüssel bleiben ihrem Wert zugeordnet
$arrayobject->asort();
//natsort: Wie assort, aber natürliche Reihenfolge (z.B. "file2" vor "file11").
//getIterator(): Gibt ein ArrayIterator Objekt zurück, geeignet zum iterieren durch das Array
$iterator = $teamObject->getIterator();
while($iterator->valid()) {
echo $iterator->curent().' hat die Funktion '.$iterator->key().'<br />';
$iterator->next();
}