Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

Generator Return Expressions ใน PHP 7

ใน PHP เวอร์ชันก่อนหน้า ฟังก์ชัน generator ไม่สามารถคืนค่านิพจน์ได้ แต่ตั้งแต่ PHP 5.5 generator return expression ถูกเพิ่มเข้ามาในที่มีอยู่แล้ว ด้วยการใช้ generator return expressions การใช้คำสั่ง return ภายใน generator จะง่ายขึ้น และยังคืนค่าของนิพจน์สุดท้าย

  • ด้วยการใช้ generator return expression เราสามารถคืนค่าของนิพจน์ได้เท่านั้น ไม่สามารถคืนค่า reference ด้วยเมธอดใหม่ Generator::getReturn() เราสามารถดึงค่าที่สามารถใช้ได้หลังจากฟังก์ชัน generator เสร็จสิ้นการ yield ค่าที่กำหนด
  • ใช้ PHP 7 generator เราสามารถคืนค่าสุดท้ายจาก generator return expressions ได้ เราสามารถดึง return expression โดยใช้ $generator->getReturn() เพราะ PHP 7 อนุญาตให้ค่าสุดท้ายถูกคืนโดย generator จาก co-routine counting ในโปรแกรมที่อาจถือครองโดย client code ที่ execute generator

Generator Return Expressions: ตัวอย่างที่ 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>

ผลลัพธ์

ผลลัพธ์สำหรับโปรแกรม PHP ด้านบนจะเป็น:

five six seven eight 

คำอธิบายสำหรับโปรแกรม PHP 7 ด้านบน -

  • เราสามารถเขียนโค้ดด้านบนใน editor และเขียน HTML code ที่จำเป็นตามตัวอย่างด้านบน และส่วน body ของ HTML inject โค้ด PHP 7 จริงสำหรับ generator return expression
  • ที่สอง ฟังก์ชันที่มี reference เป็น $generator ถูกประกาศ
  • ใน reference ของ $generator เรากำหนด yield "five", "six", "seven", และ "eight"
  • สุดท้าย เรา iterate บนฟังก์ชัน "$generator" จนจบ (PHP_EOL) และ echo ค่าของ yields พร้อมกับ generator return expression

Generator Return Expressions: ตัวอย่างที่ 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>

ผลลัพธ์

ผลลัพธ์สำหรับโปรแกรม PHP ด้านบนจะเป็น -

object(Generator)#1 (0) { }ABCstring(10) "gen-return"