Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP Iterator इंटरफेस

परिचय

Iterator इंटरफेस एब्स्ट्रैक्ट Traversable इंटरफेस को एक्सटेंड करता है। PHP कई बिल्ट-इन इटरेटर (जिन्हें SPL इटरेटर कहा जाता है) प्रदान करता है कई नियमित कार्यक्षमताओं के लिए। उदाहरण हैं ArrayIterator, DirectoryIterator आदि। Iterator इंटरफेस इम्प्लीमेंट करने वाली यूजर क्लास को इसमें परिभाषित एब्स्ट्रैक्ट मेथड इम्प्लीमेंट करने चाहिए।

सिंटैक्स

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::key - वर्तमान एलिमेंट की कुंजी लौटाता है
  • Iterator::next - अगले एलिमेंट पर आगे बढ़ता है
  • Iterator::rewind - इटरेटर को पहले एलिमेंट पर रिवाइंड करता है
  • Iterator::valid - जांचता है कि वर्तमान स्थिति वैध है या नहीं

जब IteratorAggregate या Iterator इंटरफेस इम्प्लीमेंट किए जाते हैं जो Traversable को एक्सटेंड करते हैं, तो उन्हें implements क्लॉज में इसके नाम से पहले सूचीबद्ध किया जाना चाहिए।

Iterator उदाहरण

निम्न PHP स्क्रिप्ट में, एक क्लास जो Iterator इंटरफेस इम्प्लीमेंट करती है, एक सरणी को प्राइवेट वेरिएबल के रूप में समाहित करती है। Iterator के एब्स्ट्रैक्ट मेथड इम्प्लीमेंट करके, हम foreach लूप का उपयोग करके सरणी को ट्रैवर्स कर सकते हैं साथ ही next() मेथड के साथ।

उदाहरण

<?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";
}

पुनरावृत्ति next() मेथड को व्हाइल लूप में कॉल करके भी की जा सकती है। लूप शुरू करने से पहले इटरेटर को rewind करना सुनिश्चित करें:

उदाहरण

$it->rewind();
do {
    echo $it->key() . "=>" . $it->current() . "\n";
    $it->next();
} while ($it->valid());

आउटपुट

0=>10 1=>20 2=>30 3=>40

दोनों अवसरों पर, सरणी प्रॉपर्टी की ट्रैवर्सल निम्न परिणाम दिखाती है:

0=>10 1=>20 2=>30 3=>40
  1. - PHP में इंटरफेस समझाया गया

    इस लेख में, हम PHP इंटरफेस का उपयोग करना सीखेंगे जो PHP ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में सबसे महत्वपूर्ण संरचनात्मक पैटर्न में से एक है। एक इंटरफेस हमें प्रोग्राम बनाने में सक्षम बनाता है, उन पब्लिक मेथड्स को निर्दिष्ट करता है जिन्हें एक क्लास को इम्प्लीमेंट करना होगा, बिना उन विशिष्ट मेथड्स की ज

  1. - PHP में पॉलीमॉर्फिज्म समझाया गया

    शुरुआत में, पॉलीमॉर्फिज्म ग्रीक शब्दों Poly (जिसका अर्थ कई) और morphism (जिसका अर्थ रूप) से लिया गया है। पॉलीमॉर्फिज्म ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक पैटर्न का वर्णन करता है जहां विभिन्न क्लासेज में समान काम करने वाले मेथड्स का समान नाम होना चाहिए। पॉलीमॉर्फिज्म अनिवार्य रूप से एक OOP पैटर्न

  1. - PHP में interface_exists() फंक्शन

    PHP में interface_exists() फंक्शन जांचता है कि इंटरफेस परिभाषित किया गया है या नहीं। यदि name_of_interface द्वारा दिया गया इंटरफेस परिभाषित किया गया है तो TRUE लौटाता है, अन्यथा FALSE। सिंटैक्स interface_exists(name_of_interface, autoload) पैरामीटर्स name_of_interface - इंटरफेस नाम। autoload - डि