Note that, at least as of 5.3, you still aren't allowed to return a normal Array from getIterator().
In some places, the docs wrap the array into an ArrayObject and return that. DON'T DO IT. ArrayObject drops any empty-string keys on the floor when you iterate over it (again, at least as of 5.3).
Use ArrayIterator instead. I wouldn't be surprised if it didn't have its own set of wonderful bugs, but at the very least it works correctly when you use it with this method.
Das IteratorAggregate-Interface
(PHP 5 >= 5.0.0)
Einführung
Interface, um einen externen Iterator zu erzeugen.
Interface-Übersicht
IteratorAggregate
extends
Traversable
{
/* Methoden */
}Beispiel #1 Basisnutzung
<?php
class meineDaten implements IteratorAggregate {
public $property1 = "Öffentliche Eigenschaft eins";
public $property2 = "Öffentliche Eigenschaft zwei";
public $property3 = "Öffentliche Eigenschaft drei";
public function __construct() {
$this->property4 = "letzte Eigenschaft";
}
public function getIterator() {
return new ArrayIterator($this);
}
}
$obj = new meineDaten;
foreach($obj as $key => $value) {
var_dump($key, $value);
echo "\n";
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
string(9) "property1" string(19) "Öffentliche Eigenschaft eins" string(9) "property2" string(19) "Öffentliche Eigenschaft zwei" string(9) "property3" string(21) "Öffentliche Eigenschaft drei" string(9) "property4" string(13) "letzte Eigenschaft"
Inhaltsverzeichnis
- IteratorAggregate::getIterator — Holt einen externen Iterator
Tab Atkins
29-Apr-2012 02:11
