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

पीएचपी जेनरेटर वर्ग

परिचय

लूपिंग कंस्ट्रक्शन जैसे foreach . का उपयोग करके डेटा के बड़े संग्रह को ट्रैवर्स करना बड़ी मेमोरी और काफी प्रोसेसिंग समय की आवश्यकता होगी। जनरेटर . के साथ इन ओवरहेड्स के बिना डेटा के एक सेट पर पुनरावृति करना संभव है। एक जनरेटर फ़ंक्शन एक सामान्य फ़ंक्शन के समान होता है। हालांकि, किसी फ़ंक्शन में रिटर्न स्टेटमेंट के बजाय, जनरेटर यील्ड . का उपयोग करता है कीवर्ड को बार-बार निष्पादित किया जाना है ताकि यह पुनरावृत्त होने के लिए मान प्रदान करे।

उपज कीवर्ड जनरेटर तंत्र का दिल है। भले ही इसका उपयोग वापसी के समान प्रतीत होता है, यह फ़ंक्शन के निष्पादन को नहीं रोकता है। यह पुनरावृत्ति के लिए अगला मान प्रदान करता है और फ़ंक्शन के निष्पादन को रोकता है।

सिंटैक्स

Generator implements Iterator {
   /* Methods */
   public current ( void ) : mixed
   public getReturn ( void ) : mixed
   public key ( void ) : mixed
   public next ( void ) : void
   public rewind ( void ) : void
   public send ( mixed $value ) : mixed
   public throw ( Throwable $exception ) : mixed
   public valid ( void ) : bool
   public __wakeup ( void ) : void
}

तरीके

सार्वजनिक जेनरेटर::वर्तमान (शून्य) - मिश्रित - प्राप्त मूल्य प्राप्त करें

सार्वजनिक जेनरेटर::getReturn (शून्य):मिश्रित - जनरेटर का रिटर्न वैल्यू प्राप्त करें

सार्वजनिक जेनरेटर::कुंजी (शून्य) - मिश्रित — प्राप्त मूल्य की कुंजी प्राप्त करता है।

सार्वजनिक जेनरेटर::अगला (शून्य) - शून्य - जनरेटर का निष्पादन फिर से शुरू करें। तर्क के रूप में NULL के साथ जेनरेटर ::भेजें () को कॉल करने के समान प्रभाव।

सार्वजनिक जेनरेटर::रिवाइंड (शून्य) - शून्य - इटरेटर को रिवाइंड करें। यदि पुनरावृत्ति पहले ही शुरू हो चुकी है, तो यह एक अपवाद फेंक देगा।

सार्वजनिक जेनरेटर ::भेजें (मिश्रित $ मूल्य):मिश्रित - वर्तमान उपज अभिव्यक्ति के परिणाम के रूप में जनरेटर को दिया गया मूल्य भेजता है और जनरेटर को फिर से शुरू करता है।

सार्वजनिक जेनरेटर::थ्रो (थ्रोबल $अपवाद) - मिश्रित - जनरेटर में एक अपवाद फेंकता है और जनरेटर का निष्पादन फिर से शुरू करता है।

सार्वजनिक जेनरेटर::मान्य (शून्य) - बूल - जांचें कि क्या इटरेटर बंद कर दिया गया है

सार्वजनिक जेनरेटर::__वेकअप (शून्य) - शून्य - एक अपवाद फेंकता है क्योंकि जनरेटर को क्रमबद्ध नहीं किया जा सकता है।

जेनरेटर क्लास इटरेटर इंटरफेस को लागू करता है। जेनरेटर ऑब्जेक्ट्स को नए के माध्यम से तत्काल नहीं किया जा सकता है। उपज कीवर्ड वाला कोई भी उपयोगकर्ता परिभाषित फ़ंक्शन जेनरेटर क्लास का ऑब्जेक्ट बनाता है।

जनरेटर उदाहरण

चूंकि जनरेटर इटरेटर इंटरफेस को लागू करता है, प्रत्येक लूप के लिए उपज मूल्यों को पार करने के लिए इस्तेमाल किया जा सकता है।

<?php
function squaregenerator(){
   for ($i=1; $i<=5; $i++){
      yield $i*$i;
   }
}
$gen=squaregenerator();
foreach ($gen as $val){
   echo $val . " ";
}
?>

आउटपुट

उपरोक्त प्रोग्राम निम्न आउटपुट दिखाता है

1 4 9 16 25

निम्न उदाहरण जेनरेटर क्लास के करंट () और नेक्स्ट () मेथड्स का उपयोग करता है ताकि यील्ड वैल्यू को ट्रैवर्स किया जा सके। लूप कंडीशन को वैलिड () मेथड से चेक किया जाता है।

उदाहरण

<?php
function squaregenerator(){
   for ($i=1; $i<=5; $i++){
      yield $i*$i;
   }
}
$gen=squaregenerator();
while ( $gen->valid() ){
   echo "key: " . $gen->key(). " value: ". $gen->current() . "\n";
   $gen->next();
}
?>

आउटपुट

उपरोक्त प्रोग्राम निम्न आउटपुट दिखाता है

key: 0 value: 1
key: 1 value: 4
key: 2 value: 9
key: 3 value: 16
key: 4 value: 25

  1. PHP में एब्स्ट्रैक्ट क्लास को समझाइए।

    PHP5 इसके साथ ऑब्जेक्ट-ओरिएंटेड मॉडल के साथ आता है, ऑब्जेक्ट-ओरिएंटेड मॉडल की कुछ अवधारणाएँ हैं:क्लास, ऑब्जेक्ट, एनकैप्सुलेशन, पॉलीमॉर्फिज्म, एब्सट्रैक्ट और फाइनल क्लासेस, और मेथड्स, इंटरफेस और इनहेरिटेंस, आदि ... इस लेख में, हम PHP में ऑब्जेक्ट-ओरिएंटेड तकनीकों से संबंधित Abstract Class और इसकी व

  1. PHP में get_class_methods () फ़ंक्शन

    get_class_methods() फ़ंक्शन को वर्ग विधियों के नाम मिलते हैं। यह name_of_class द्वारा निर्दिष्ट वर्ग के लिए परिभाषित विधि नामों की एक सरणी देता है। त्रुटि के मामले में, यह NULL देता है। सिंटैक्स get_class_methods(class) पैरामीटर name_of_class - वर्ग का नाम। आवश्यक! वापसी get_class_methods() फ

  1. PHP में class_exists () फ़ंक्शन

    PHP में class_exists() फ़ंक्शन यह जांचता है कि क्या क्लास को परिभाषित किया गया है। यदि वर्ग एक परिभाषित वर्ग है तो यह TRUE लौटाता है, अन्यथा यह FALSE लौटाता है। सिंटैक्स class_exists(class, autoload) पैरामीटर कक्षा - कक्षा का नाम। स्वतः लोड करें - डिफ़ॉल्ट रूप से __autoload को कॉल करना है या न