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

Generator ส่งคืนนิพจน์ใน PHP 7


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

  • โดยการใช้ตัวสร้างการส่งคืนนิพจน์ เราสามารถคืนค่าของนิพจน์ แต่ไม่สามารถคืนค่าการอ้างอิงได้ โดยใช้ Generator::getReturn() . ใหม่ เราสามารถดึงค่าที่สามารถใช้ได้เมื่อฟังก์ชันตัวสร้างเสร็จสิ้นการให้ค่าที่กำหนดไว้
  • โดยใช้ตัวสร้าง PHP 7 เราสามารถคืนค่าสุดท้ายจากนิพจน์การส่งคืนของตัวสร้าง เราสามารถเรียก return expression โดยใช้ $generator>getReturn() เพราะ PHP 7 ยอมให้ตัวสร้างคืนค่าสุดท้ายจากการนับร่วมในโปรแกรมที่โค้ดไคลเอ็นต์เรียกใช้ตัวสร้างได้

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 ข้างต้น -

  • เราสามารถเขียนโค้ดด้านบนในตัวแก้ไข และสามารถเขียนโค้ด HTML ที่จำเป็นตามที่ระบุในตัวอย่างด้านบน และส่วนเนื้อหาของ HTML จะฉีดโค้ด PHP 7 จริงสำหรับการแสดงออกของตัวสร้างการส่งคืน
  • ประการที่สอง มีการประกาศฟังก์ชันที่มีการอ้างอิงเป็น $generator
  • ในการอ้างอิงถึง $generator เรากำหนดผลตอบแทนเป็น “ห้า”, หก”, เจ็ด” และ “แปด”
  • สุดท้ายนี้ เราวนซ้ำในฟังก์ชัน “$generator” จนถึงจุดสิ้นสุด (PHP_EOL) และสะท้อนค่าของผลตอบแทนพร้อมกับนิพจน์การส่งคืนตัวสร้าง

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"