परिचय
इटरेटर इंटरफ़ेस सार का विस्तार करता है संक्रमणीय इंटरफेस। PHP कई बिल्ट-इन इटरेटर प्रदान करता है (जिन्हें SPL इटरेटर कहा जाता है ) कई नियमित कार्यों के लिए। उदाहरण हैं ArrayIterator , DirectoryIterator आदि। एक उपयोगकर्ता वर्ग जो इटरेटर इंटरफ़ेस को लागू करता है, उसमें परिभाषित सार विधियों को लागू करना चाहिए।
सिंटैक्स
Iterator extends Traversable { /* Methods */ abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool }
तरीके
Iterator::current — वर्तमान तत्व लौटाएं
इटरेटर ::कुंजी - वर्तमान तत्व की कुंजी लौटाएं
Iterator::next — अगले तत्व पर आगे बढ़ें
इटरेटर ::रिवाइंड - इटरेटर को पहले तत्व पर रिवाइंड करें
Iterator::valid — जाँचता है कि क्या वर्तमान स्थिति मान्य है
IteratorAggregate implementing को लागू करते समय या इटरेटर इंटरफ़ेस जो ट्रैवर्सेबल का विस्तार करता है, उन्हें इसके नाम से पहले कार्यान्वयन . में सूचीबद्ध किया जाना चाहिए खंड।
इटरेटर उदाहरण
निम्नलिखित PHP स्क्रिप्ट में, इंटरफ़ेस लागू करने वाले वर्ग में निजी चर के रूप में एक सरणी होती है। Iterator के अमूर्त तरीकों को लागू करते हुए, हम foreach . का उपयोग करके सरणी को पार कर सकते हैं लूप के साथ-साथ अगला () विधि।
उदाहरण
<?php class myIterator implements Iterator { private $index = 0; private $arr = array(10,20,30,40); public function __construct() { $this->index = 0; } public function rewind() { $this->index = 0; } public function current() { return $this->arr[$this->index]; } public function key() { return $this->index; } public function next() { ++$this->index; } public function valid() { return isset($this->arr[$this->index]); } } ?>
foreach . का उपयोग करना लूप, हम MyIterator ऑब्जेक्ट की सरणी संपत्ति पर पुनरावृति कर सकते हैं
$it = new myIterator(); foreach($it as $key => $value) { echo "$key=>". $value ."\n"; }
अगला () . को दबाकर भी पुनरावृत्ति की जा सकती है थोड़ी देर के लूप में विधि। रिवाइंड . करना सुनिश्चित करें लूप शुरू करने से पहले इटरेटर
उदाहरण
$it->rewind(); do { echo $it->key() . "=>" .$it->current() . "\n"; $it->next(); } while ($it->valid());
आउटपुट
दोनों अवसरों पर, सरणी गुण का ट्रैवर्सल निम्नलिखित परिणाम दिखाता है
0=>10 1=>20 2=>30 3=>40