PHP-এর পুরানো সংস্করণে, জেনারেটর ফাংশন এক্সপ্রেশন রিটার্ন করতে পারত না, কিন্তু PHP 5.5 থেকে জেনারেটর রিটার্ন এক্সপ্রেশন বিদ্যমানটিতে যোগ করা হয়েছে। জেনারেটর রিটার্ন এক্সপ্রেশন ব্যবহার করে, জেনারেটরের ভিতরে রিটার্ন স্টেটমেন্ট ব্যবহার করা সহজ হয়ে যায় এবং, এটি চূড়ান্ত এক্সপ্রেশনের মান রিটার্ন করে।
- জেনারেটর রিটার্ন এক্সপ্রেশন ব্যবহার করে, আমরা শুধু এক্সপ্রেশনের মান রিটার্ন করতে পারি কিন্তু রেফারেন্স রিটার্ন করতে পারি না। নতুন Generator::getReturn() মেথড ব্যবহার করে, আমরা মান ফেচ করতে পারি যা একবার জেনারেটর ফাংশন ডিফাইন করা মানগুলো yield করার পর ব্যবহার করা যাবে।
- PHP 7 জেনারেটর ব্যবহার করে, আমরা জেনারেটর রিটার্ন এক্সপ্রেশন থেকে একটি চূড়ান্ত মান রিটার্ন করতে পারি। আমরা $generator>getReturn() ব্যবহার করে রিটার্ন এক্সপ্রেশন রিট্রিভ করতে পারি কারণ PHP 7 একটি চূড়ান্ত মান রিটার্ন করার অনুমতি দেয় জেনারেটর থেকে কো-রুটিন কাউন্টিং-এ প্রোগ্রামে যা ক্লায়েন্ট কোড জেনারেটর এক্সিকিউট করে সেটি ধারণ করতে পারে।
Generator Return Expressions: উদাহরণ ১
<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>আউটপুট
উপরোক্ত PHP প্রোগ্রামের আউটপুট হবে:
five six seven eight
উপরোক্ত PHP 7 প্রোগ্রামের ব্যাখ্যা −
- আমরা উপরের কোডটি একটি এডিটরে লিখতে পারি এবং উপরের উদাহরণে দেওয়া HTML কোড লিখতে পারি এবং HTML-এর বডি পärt জেনারেটর রিটার্ন এক্সপ্রেশনের জন্য আসল PHP 7 কোড ইনজেক্ট করবে।
- দ্বিতীয়, $generator রেফারেন্স হিসেবে একটি ফাংশন ডিক্লেয়ার করা হয়েছে।
- $generator রেফারেন্সে, আমরা yield “five”,” six”,” seven”, এবং “eight” ডিফাইন করেছি।
- শেষে, আমরা “$generator” ফাংশনে শেষ পর্যন্ত (PHP_EOL) ইটারেট করছি এবং yield-এর মানগুলোর পাশাপাশি জেনারেটর রিটার্ন এক্সপ্রেশন ইকো করছি।
Generator Return Expressions: উদাহরণ ২
<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>আউটপুট
উপরোক্ত PHP প্রোগ্রামের আউটপুট হবে −
object(Generator)#1 (0) { }ABCstring(10) "gen-return"