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

Generator Delegation ใน PHP 7

แนวคิดของ generator ไม่ได้ใหม่ใน PHP 7 เพราะมีอยู่ในเวอร์ชันก่อนหน้าแล้ว ด้วย generators การ implement จะง่ายขึ้นโดยไม่มี overhead ของการ implement คลาสที่ implements iterator interface ด้วยความช่วยเหลือของ generator เราสามารถเขียนโค้ด foreach ได้โดยไม่ต้องใช้อาร์เรย์ในหน่วยความจำ มันยังช่วยกำจัดข้อผิดพลาด “exceed memory limit errors”

ด้วยความช่วยเหลือของ generator delegation ใน PHP 7 เราสามารถ delegate ไปยัง generator อีกตัวได้โดยอัตโนมัติ มันยังอนุญาตให้อาร์เรย์และอ็อบเจกต์ที่ implement traversable interface ได้

ตัวอย่าง Generator Delegation ที่ 1

<html> <head> <title> PHP 7 : Tutorialpoint </title> </head> <body> <?php 
    function generator(){ 
        yield "zero"; 
        yield "one"; 
        yield "two"; 
    } 
    function generator1(){ 
        yield "three"; 
        yield "four"; 
        yield "five"; 
    } 
    function generator2(){ 
        yield "six"; 
        yield "seven"; 
        yield "eight"; 
        yield from generator(); 
        yield "nine"; 
        yield from generator1(); 
        yield "ten"; 
    } 
    foreach (generator() as $value){ 
        echo $value, PHP_EOL; 
    } 
    foreach(generator2() as $value){ 
        echo $value, PHP_EOL; 
    } 
?> </body> </html>

ผลลัพธ์

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

zero one two six seven eight zero one two nine three four five ten

คำอธิบาย

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