1. إنه أيضًا مكرر بحد ذاته، عندما يتم إنشاء مثيل له، يجب تمريره إلى مكرر آخر للتخزين الداخلي، وهو InnerIterator للتكرار الداخلي.
2. يمكن ترقية وظيفة التكرار الأصلية عن طريق وراثة IteratorIterator.
يجب أيضًا أن تكون معلمات البناء الخاصة بها عبارة عن تكرارات، ويتطلب توقيع المعلمة نفسه كائنًا ينفذ الواجهة القابلة للعبور.
مثال
يمتد فئة OutIterator إلى IteratorIterator { ترجيع الوظيفة العامة () { صدى __METHOD__، PHP_EOL؛ إرجاع الوالدين::rewind(); } الوظيفة العامة صالحة () { صدى __METHOD__، PHP_EOL؛ إرجاع الأصل::valid(); } الوظيفة العامة الحالية () { صدى __METHOD__، PHP_EOL؛ إرجاع الأصل::current() '_suffix'; } مفتاح الوظيفة العامة () { صدى __METHOD__، PHP_EOL؛ إرجاع الوالد::key(); } الوظيفة العامة التالية () { صدى __METHOD__، PHP_EOL؛ إرجاع الوالد::next(); } الوظيفة العامة getInnerIterator() { صدى __METHOD__، PHP_EOL؛ إرجاع الأصل::getInnerIterator(); } } $iterator = new OutIterator(new ArrayIterator([1, 2, 3])); foreach ($مكرر كـ $k => $v) { صدى $k، ':'، $v، PHP_EOL؛ } // OutIterator::rewind // OutIterator::valid // OutIterator::current // OutIterator::key // 0: 1_suffix // OutIterator::next // OutIterator::valid // OutIterator::current // OutIterator::key // 1: 2_suffix // OutIterator::next // OutIterator::valid // OutIterator::current // OutIterator::key // 2: 3_suffix // OutIterator::next // OutIterator::valid
ما ورد أعلاه هو فهم مكرر التغليف PHP، وآمل أن يكون مفيدًا للجميع. المزيد من دليل تعلم PHP: شبكة التعليمات البرمجية المصدر