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

PHP ऑब्जेक्ट इटरेशन: foreach और Iterator इंटरफेस


परिचय

PHP 5 से, किसी ऑब्जेक्ट के सभी विज़िबल आइटम्स के माध्यम से इटरेट करना संभव है। इटरेशन foreach लूप के साथ-साथ Iterator इंटरफेस का उपयोग करके किया जा सकता है। PHP में IteratorAggregate इंटरफेस भी है जिसका उपयोग इस उद्देश्य के लिए किया जा सकता है।

1. foreach लूप का उपयोग

डिफ़ॉल्ट रूप से, foreach लूप केवल public प्रॉपर्टीज़ पर इटरेट करता है। यदि क्लास के अंदर से इटरेट किया जाए (जैसे मेथड के भीतर), तो private और protected प्रॉपर्टीज़ भी विज़िबल होती हैं।

उदाहरण

<?php
class myclass {
    private $var;
    protected $var1;
    public $x, $y, $z;
    
    public function __construct() {
        $this->var = "private variable";
        $this->var1 = TRUE;
        $this->x = 100;
        $this->y = 200;
        $this->z = 300;
    }
    
    public function iterate() {
        foreach ($this as $key => $value) {
            print "$key => $value\n";
        }
    }
}

$obj = new myclass();
foreach($obj as $key => $value) {
    print "$key => $value\n";
}
echo "\n";
$obj->iterate();
?>

आउटपुट

x => 100
y => 200
z => 300
var => private variable
var1 => 1
x => 100
y => 200
z => 300

व्याख्या: बाहरी foreach केवल public प्रॉपर्टीज़ (x, y, z) दिखाता है। आंतरिक iterate() मेथड private और protected प्रॉपर्टीज़ भी दिखाता है क्योंकि यह क्लास के अंदर से एक्सेस कर रहा है।

2. Iterator इंटरफेस का उपयोग

Iterator इंटरफेस निम्नलिखित एब्स्ट्रैक्ट मेथड्स को परिभाषित करता है जिन्हें इम्प्लीमेंट करना होता है:

abstract public current(): mixed
abstract public key(): scalar
abstract public next(): void
abstract public rewind(): void
abstract public valid(): bool
  • current() - वर्तमान एलिमेंट लौटाता है
  • key() - वर्तमान एलिमेंट की कुंजी लौटाता है
  • next() - अगले एलिमेंट पर जाता है
  • rewind() - इटरेटर को पहले एलिमेंट पर रीवाइंड करता है
  • valid() - चेक करता है कि वर्तमान स्थिति वैध है या नहीं

उदाहरण: Iterator इम्प्लीमेंटेशन

<?php
class myclass implements Iterator {
    private $arr = array('a', 'b', 'c');
    
    public function rewind() {
        echo "rewinding\n";
        reset($this->arr);
    }
    
    public function current() {
        $var = current($this->arr);
        echo "current: $var\n";
        return $var;
    }
    
    public function key() {
        $var = key($this->arr);
        echo "key: $var\n";
        return $var;
    }
    
    public function next() {
        $var = next($this->arr);
        echo "next: $var\n";
        return $var;
    }
    
    public function valid() {
        $key = key($this->arr);
        $var = ($key !== NULL && $key !== FALSE);
        echo "valid: $var\n";
        return $var;
    }
}

$obj = new myclass();
foreach ($obj as $k => $v) {
    print "$k: $v\n";
}
?>

आउटपुट

rewinding
valid: 1
current: a
key: 0
0: a
next: b
valid: 1
current: b
key: 1
1: b
next: c
valid: 1
current: c
key: 2
2: c
next:
valid:

मुख्य बिंदु

  • foreach लूप स्वचालित रूप से rewind(), valid(), current(), key(), next() कॉल करता है।
  • Iterator इम्प्लीमेंट करने से कस्टम इटरेशन लॉजिक (जैसे फाइल पढ़ना, डेटाबेस रिजल्ट्स) संभव होता है।
  • IteratorAggregate इंटरफेस के साथ getIterator() मेथड इम्प्लीमेंट करके बाहरी इटरेटर उपयोग कर सकते हैं।
  1. - PHP में date_modify() फंक्शन

    PHP में date_modify() फंक्शन टाइमस्टैम्प को बदलता है। सफलता पर NULL और विफलता पर FALSE लौटाता है। सिंटैक्स date_modify(object, modify) पैरामीटर्स object - date_create() द्वारा लौटाया गया DateTime ऑब्जेक्ट। modify - तारीख/समय स्ट्रिंग निर्दिष्ट करता है। रिटर्न वैल्यू सफलता पर NULL, विफलता पर FAL

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

    PHP में method_exists() फंक्शन जांचता है कि क्लास मेथड मौजूद है या नहीं। सिंटैक्स method_exists(object, name_of_method) पैरामीटर्स object - ऑब्जेक्ट इंस्टेंस या क्लास नाम। name_of_method - मेथड नाम। रिटर्न वैल्यू यदि method_name द्वारा दिया गया मेथड दिए गए ऑब्जेक्ट के लिए परिभाषित किया गया है त

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

    PHP में get_object_vars() फंक्शन दिए गए ऑब्जेक्ट की प्रॉपर्टीज़ प्राप्त करता है। यह निर्दिष्ट ऑब्जेक्ट के लिए परिभाषित ऑब्जेक्ट प्रॉपर्टीज़ की एक सहयोगी सरणी लौटाता है। सिंटैक्स get_object_vars(object) पैरामीटर्स object - एक ऑब्जेक्ट इंस्टेंस। रिटर्न वैल्यू निर्दिष्ट ऑब्जेक्ट के लिए परिभाषित ऑब