
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 :: valideCe 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