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

PHP जेनरेटर बनाम इटरेटर ऑब्जेक्ट्स

परिचय

जब जनरेटर फ़ंक्शन को आंतरिक रूप से कहा जाता है, तो जेनरेटर वर्ग का एक नया ऑब्जेक्ट वापस कर दिया जाता है। यह इटरेटर . को लागू करता है इंटरफेस। इटरेटर इंटरफ़ेस निम्नलिखित अमूर्त विधियों को परिभाषित करता है

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

जेनरेटर केवल-अग्रेषित पुनरावर्तक . के रूप में कार्य करता है ऑब्जेक्ट होगा, और ऐसे तरीके प्रदान करता है जिन्हें जनरेटर की स्थिति में हेरफेर करने के लिए बुलाया जा सकता है, जिसमें मान भेजना और उसमें से मान वापस करना शामिल है।

इंटररेटर के रूप में जेनरेटर

निम्नलिखित उदाहरण में, जेनरेटर फ़ंक्शन जेनरेटर ऑब्जेक्ट में एक फ़ाइल में लाइनें उत्पन्न करता है जिसे ओरीच लूप का उपयोग करके ट्रेस किया जा सकता है। वर्तमान . जैसी पुनरावर्तक विधियां () और अगला () का भी आह्वान किया जा सकता है। हालांकि, चूंकि जनरेटर केवल फॉरवर्ड-ओनली इटरेटर है, इसलिए रिवाइंड calling को कॉल करना () विधि अपवाद फेंकता है

उदाहरण

<?php
function filegenerator($name) {
   $fileHandle = fopen($name, 'r');
   while ($line = fgets($fileHandle)) {
      yield $line;
   }
   fclose($fileHandle);
}
$name="test.txt";
$file=filegenerator($name);
foreach ($file as $line)
echo $line;
$file->rewind();
echo $file->current();
$file->next();
echo $file->current();
?>

आउटपुट

फ़ाइल लाइनों के ट्रैवर्सल के बाद, नीचे दिखाए गए अनुसार घातक त्रुटि प्रदर्शित होती है

PHP User Defined Functions
PHP Function Arguments
PHP Variable Functions
PHP Internal (Built-in) Functions
PHP Anonymous functions
PHP Arrow Functions
PHP Fatal error: Uncaught Exception: Cannot rewind a generator that was already run

  1. PHP में वस्तुओं की एक सरणी से एक संपत्ति निकालें

    नीचे दिए गए कोड को देखते हुए, कार्य my_object वेरिएबल की आईडी निकालना है - उदाहरण $my_object = Array ( [0] => stdClass Object    (       [id] => 12    ),    [1] => stdClass Object    (       [id] => 33    ),

  1. PHP में अनाम ऑब्जेक्ट बनाना

    PHP संस्करण 7 से शुरू होकर अनाम कक्षाएं बनाना संभव हो गया है। PHP में प्रत्येक वस्तु एक वर्ग से जुड़ी होती है। वस्तुओं को बनाने के लिए अनाम कक्षाओं को त्वरित किया जा सकता है। उदाहरण <?php    class my_sample_class {}    $obj = new class extends my_sample_class {};    

  1. पायथन में जेनरेटर?

    PEP 255 के साथ पेश किए जाने के बाद से जेनरेटर अजगर का एक महत्वपूर्ण हिस्सा रहे हैं। पायथन में जेनरेटर विशेष रूटीन हैं जिनका उपयोग लूप के पुनरावृत्ति व्यवहार को नियंत्रित करने के लिए किया जा सकता है। एक जनरेटर एक सरणी लौटने वाले फ़ंक्शन के समान है। एक जनरेटर में पैरामीटर होता है, जिसे हम कॉल कर सकते