แนวคิดของตัวสร้างนั้นไม่ใช่เรื่องใหม่สำหรับ PHP 7 เพราะมันมีให้ใช้งานในเวอร์ชันก่อนหน้าด้วย ด้วยตัวสร้าง การใช้งานกลายเป็นเรื่องง่ายโดยไม่มีค่าใช้จ่ายในการติดตั้งคลาสที่ใช้อินเทอร์เฟซตัววนซ้ำ ด้วยความช่วยเหลือของตัวสร้าง เราสามารถเขียน foreach รหัสโดยไม่ต้องใช้อาร์เรย์ในหน่วยความจำ นอกจากนี้ยังช่วยขจัด “ข้อผิดพลาดหน่วยความจำเกินขีดจำกัด”
ด้วยความช่วยเหลือของการมอบหมายตัวสร้างใน PHP 7 เราสามารถมอบหมายให้กำเนิดอื่นได้โดยอัตโนมัติ นอกจากนี้ยังอนุญาตอาร์เรย์และอ็อบเจ็กต์ที่ใช้อินเทอร์เฟซที่ตรวจสอบย้อนกลับได้
ตัวอย่างการมอบหมายเครื่องกำเนิดไฟฟ้า 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 ด้านบนจะเป็น −
zero one two six seven eight zero one two nine three four five ten
คำอธิบาย
- เราสามารถเขียนโค้ดด้านบนในตัวแก้ไขและสามารถเขียนโค้ด HTML ที่จำเป็นตามที่ระบุในตัวอย่างด้านบน และส่วนเนื้อหาของ HTML จะแทรกโค้ด PHP 7 จริงสำหรับนิพจน์การส่งคืนตัวสร้าง
- ประการที่สอง มีการประกาศฟังก์ชัน 3 ฟังก์ชันโดยใช้ "generator", "generator1" และ "generator2"
- เรากำหนดผลตอบแทนเป็น “ศูนย์” “หนึ่ง” และ “สอง” ในฟังก์ชันตัวสร้าง
- ในฟังก์ชัน "generator1" มีการกำหนดผลตอบแทนเป็น "สาม" "สี่" และ "ห้า"
- ในฟังก์ชัน 'generator2' เราได้กำหนดอัตราผลตอบแทน"six", "seven" และ "eight" อ่านตัวสร้างและตัวสร้าง 1 ในเครื่องกำเนิดไฟฟ้า2
- สุดท้ายนี้ เรากำลังวนซ้ำในฟังก์ชัน "generator" และ "generator2" จนกว่าจะสิ้นสุดการสะท้อนค่าของผลตอบแทน