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

ฟังก์ชันไร้ชื่อ (Anonymous Functions) ใน PHP

บทนำ

Anonymous function คือฟังก์ชันที่ไม่มีชื่อที่ผู้ใช้กำหนด ฟังก์ชันแบบนี้เรียกอีกอย่างว่า closure หรือ lambda function บางครั้งคุณอาจต้องการฟังก์ชันสำหรับใช้ครั้งเดียว Closure คือ anonymous function ที่ปิด (closes) บนสภาพแวดล้อมที่มันถูกกำหนด ต้องระบุคีย์เวิร์ด use ในมัน การใช้งานที่พบบ่อยที่สุดของ anonymous function คือการสร้าง inline callback function

รูปแบบไวยากรณ์

$var=function ($arg1, $arg2) { return $val; };
  • ไม่มีชื่อฟังก์ชันระหว่างคีย์เวิร์ด function และวงเล็บเปิด
  • มี semicolon หลังการกำหนดฟังก์ชัน เพราะ anonymous function definitions เป็นนิพจน์ (expressions)
  • ฟังก์ชันถูกมอบหมายให้ตัวแปร และเรียกใช้ภายหลังด้วยชื่อตัวแปร
  • เมื่อส่งให้ฟังก์ชันอื่นที่จะเรียกภายหลัง เรียกว่า callback
  • คืนค่าจากภายในฟังก์ชันภายนอก เพื่อให้เข้าถึงตัวแปรของฟังก์ชันภายนอกได้ เรียกว่า closure

ตัวอย่าง Anonymous function

ตัวอย่าง

<?php $var = function ($x) {return pow($x,3);}; echo "cube of 3 = " . $var(3); ?>

ผลลัพธ์

cube of 3 = 27

Anonymous function เป็น callback

ในตัวอย่างต่อไปนี้ anonymous function ถูกใช้เป็นอาร์กิวเมนต์สำหรับฟังก์ชันในตัว usort() usort() เรียงลำดับอาร์เรย์ที่ให้มาโดยใช้ฟังก์ชันเปรียบเทียบ

ตัวอย่าง

<?php $arr = [10,3,70,21,54]; usort ($arr, function ($x , $y) {     return $x > $y; }); foreach ($arr as $x){     echo $x . "\n"; } ?>

ผลลัพธ์

3 10 21 54 70

Anonymous function เป็น closure

Closure ยังเป็น anonymous function ที่เข้าถึงตัวแปรนอกขอบเขตได้ด้วยคีย์เวิร์ด use

ตัวอย่าง

<?php $maxmarks=300; $percent=function ($marks) use ($maxmarks) {return $marks*100/$maxmarks;}; echo "marks=285 percentage=". $percent(285); ?>

ผลลัพธ์

marks=285 percentage=95