1. นอกจากนี้ยังเป็นตัววนซ้ำอีกด้วย เมื่อสร้างอินสแตนซ์แล้ว จะต้องส่งต่อไปยังตัววนซ้ำอื่นเพื่อจัดเก็บข้อมูลภายใน นั่นคือ InnerIterator การวนซ้ำภายใน
2. ฟังก์ชันตัววนซ้ำดั้งเดิมสามารถอัปเกรดได้โดยการสืบทอด IteratorIterator
พารามิเตอร์การสร้างจะต้องเป็นตัววนซ้ำ และลายเซ็นของพารามิเตอร์นั้นจำเป็นต้องมีออบเจ็กต์ที่ใช้อินเทอร์เฟซ Traversable
ตัวอย่าง
คลาส OutIterator ขยาย IteratorIterator - ฟังก์ชั่นสาธารณะย้อนกลับ () - เสียงสะท้อน __วิธีการ__, PHP_EOL; กลับผู้ปกครอง::ย้อนกลับ(); - ฟังก์ชั่นสาธารณะถูกต้อง () - เสียงสะท้อน __วิธีการ__, PHP_EOL; กลับผู้ปกครอง::valid(); - ฟังก์ชั่นสาธารณะปัจจุบัน () - เสียงสะท้อน __วิธีการ__, PHP_EOL; กลับ parent::current() '_suffix'; - ปุ่มฟังก์ชั่นสาธารณะ () - เสียงสะท้อน __วิธีการ__, PHP_EOL; กลับผู้ปกครอง::key(); - ฟังก์ชั่นสาธารณะต่อไป () - เสียงสะท้อน __วิธีการ__, PHP_EOL; กลับผู้ปกครอง::ถัดไป(); - ฟังก์ชั่นสาธารณะ getInnerIterator() - เสียงสะท้อน __วิธีการ__, PHP_EOL; กลับพาเรนต์::getInnerIterator(); - - $iterator = OutIterator ใหม่ (ArrayIterator ใหม่ ([1, 2, 3])); foreach ($ตัววนซ้ำเป็น $k => $v) { เสียงสะท้อน $k, ': ', $v, PHP_EOL; - // OutIterator::rewind // OutIterator::valid // OutIterator::current // OutIterator::key // 0: 1_suffix // OutIterator::ถัดไป // OutIterator::valid // OutIterator::current // OutIterator::key // 1: 2_suffix // OutIterator::ถัดไป // OutIterator::valid // OutIterator::current // OutIterator::key // 2: 3_suffix // OutIterator::ถัดไป // OutIterator::valid
ข้างต้นคือความเข้าใจเกี่ยวกับตัววนซ้ำบรรจุภัณฑ์ PHP ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน คู่มือการเรียนรู้ PHP เพิ่มเติม: เครือข่ายซอร์สโค้ด