PHP के पुराने संस्करणों में, जनरेटर फ़ंक्शन्स एक्सप्रेशन्स वापस नहीं कर पाते थे, लेकिन PHP 5.5 से, जनरेटर रिटर्न एक्सप्रेशन को मौजूदा में जोड़ा गया है। जनरेटर रिटर्न एक्सप्रेशन्स का उपयोग करके, जनरेटर के भीतर रिटर्न स्टेटमेंट का उपयोग करना आसान है, और यह अंतिम एक्सप्रेशन का मान भी लौटाता है।
- जनरेटर रिटर्न एक्सप्रेशन का उपयोग करके, हम केवल एक्सप्रेशन का मान वापस कर सकते हैं लेकिन रेफरेंस नहीं। नए Generator::getReturn() मेथड का उपयोग करके, हम उस मान को प्राप्त कर सकते हैं जिसका उपयोग तब किया जा सकता है जब जनरेटर फ़ंक्शन परिभाषित मानों को यील्ड करना समाप्त कर देता है।
- PHP 7 जनरेटर का उपयोग करके, हम जनरेटर रिटर्न एक्सप्रेशन्स से एक अंतिम मान वापस कर सकते हैं। हम $generator->getReturn() का उपयोग करके रिटर्न एक्सप्रेशन को पुनः प्राप्त कर सकते हैं क्योंकि PHP 7 को-रूटीन काउंटिंग में प्रोग्राम द्वारा धारण किए जा सकने वाले जनरेटर से अंतिम मान वापस करने की अनुमति देता है जो क्लाइंट कोड जनरेटर को निष्पादित करता है।
जनरेटर रिटर्न एक्सप्रेशन्स: उदाहरण 1
<html> <head> <title> PHP 7 Feature : Generator Return Expressions </title> </head> <body>
<?php
$generator = (function(){
yield "five";
yield "six";
yield "seven";
return "eight";
})
();
foreach ($generator as $val){
echo $val, PHP_EOL;
}
echo $generator->getReturn(), PHP_EOL;
?>
</body> </html>
आउटपुट
five six seven eight
उपरोक्त PHP 7 प्रोग्राम के लिए व्याख्या
- हम उपरोक्त कोड को एक एडिटर में लिख सकते हैं और ऊपर दिए गए उदाहरण में आवश्यक HTML कोड लिख सकते हैं और HTML का बॉडी पार्ट जनरेटर रिटर्न एक्सप्रेशन के लिए वास्तविक PHP 7 कोड इंजेक्ट करता है।
- दूसरे, $generator के संदर्भ के साथ एक फ़ंक्शन घोषित किया गया है।
- $generator के संदर्भ में, हमने यील्ड "फाइव", "सिक्स", "सेवन", और "आठ" परिभाषित किए।
- अंत में, हम "$generator" फ़ंक्शन पर अंत तक (PHP_EOL) पुनरावृति कर रहे हैं और जनरेटर रिटर्न एक्सप्रेशन के साथ यील्ड के मानों को इको कर रहे हैं।
जनरेटर रिटर्न एक्सप्रेशन्स: उदाहरण 2
<html> <head> <title> PHP 7 Feature: Generator Return Expressions Example </title> </head> <body>
<?php
function gen(){
yield 'A';
yield 'B';
yield 'C';
return 'gen-return';
}
$generator = gen();
var_dump($generator);
foreach ($generator as $letter){
echo $letter;
}
var_dump($generator->getReturn());
?>
</body> </html>
आउटपुट
object(Generator)#1 (0) { }
ABC
string(10) "gen-return"