1. C'est également un itérateur lui-même. Lorsqu'il est instancié, il doit être transmis à un autre itérateur pour le stockage interne, c'est-à-dire l'itération interne InnerIterator.
2. La fonction itérateur d'origine peut être mise à niveau en héritant d'IteratorIterator.
Ses paramètres de construction doivent également être des itérateurs, et la signature du paramètre elle-même nécessite un objet qui implémente l'interface Traversable.
Exemple
la classe OutIterator étend IteratorIterator { fonction publique rewind() { echo __METHOD__, PHP_EOL; return parent::rewind(); } fonction publique valide() { echo __METHOD__, PHP_EOL; return parent :: valide (); } fonction publique actuelle() { echo __METHOD__, PHP_EOL; return parent::current() '_suffix'; } clé de fonction publique() { echo __METHOD__, PHP_EOL; return parent::key(); } fonction publique suivante() { echo __METHOD__, PHP_EOL; return parent :: suivant (); } fonction publique getInnerIterator() { echo __METHOD__, PHP_EOL; return parent::getInnerIterator(); } } $iterator = new OutIterator(new ArrayIterator([1, 2, 3])); foreach ($iterator as $k => $v) { echo $k, ': ', $v, PHP_EOL; } // OutIterator :: rembobiner // OutIterator :: valide // OutIterator :: courant // OutIterator :: clé // 0 : 1_suffixe // OutIterator :: suivant // OutIterator :: valide // OutIterator :: courant // OutIterator :: clé // 1 : 2_suffixe // OutIterator :: suivant // OutIterator :: valide // OutIterator :: courant //OutItérateur :: clé // 2 : 3_suffixe // OutIterator :: suivant // OutIterator :: valide
Ce qui précède est la compréhension de l'itérateur d'empaquetage PHP, j'espère que cela sera utile à tout le monde. Plus de guide d'apprentissage PHP : réseau de code source