แนะนำตัว
ฟังก์ชันที่ไม่ระบุชื่อ (เรียกอีกอย่างว่าแลมบ์ดา) ส่งคืนอ็อบเจ็กต์ของ การปิด ระดับ. คลาสนี้มีวิธีการเพิ่มเติมบางอย่างที่ช่วยให้สามารถควบคุมฟังก์ชันที่ไม่ระบุตัวตนเพิ่มเติมได้
ไวยากรณ์
Closure {
/* Methods */
private __construct ( void )
public static bind ( Closure $closure , object $newthis [, mixed $newscope = "static" ] ) : Closure
public bindTo ( object $newthis [, mixed $newscope = "static" ] ) : Closure
public call ( object $newthis [, mixed $... ] ) : mixed
public static fromCallable ( callable $callable ) : Closure
} วิธีการ
ปิดส่วนตัว::__สร้าง ( ถือเป็นโมฆะ ) — เมธอดนี้มีไว้เพื่อไม่อนุญาตให้สร้างอินสแตนซ์ของคลาส Closure เท่านั้น ออบเจ็กต์ของคลาสนี้สร้างขึ้นโดยฟังก์ชันที่ไม่ระบุชื่อ
ปิดคงที่สาธารณะ::ผูกมัด ( ปิด $ปิด วัตถุ $newthis [ ผสม $newscope ="คงที่" ] ) - ปิด — ทำซ้ำการปิดด้วยวัตถุที่ถูกผูกไว้และขอบเขตคลาสที่เฉพาะเจาะจง เมธอดนี้เป็นเวอร์ชันคงที่ของ Closure::bindTo()
ปิดสาธารณะ::bindTo ( วัตถุ $newthis [ ผสม $newscope ="คงที่" ] ) - ปิด — ทำซ้ำการปิดด้วยวัตถุที่ถูกผูกไว้ใหม่และขอบเขตคลาส สร้างและส่งคืนฟังก์ชันที่ไม่ระบุชื่อใหม่ที่มีเนื้อหาเดียวกันและตัวแปรที่ถูกผูกไว้ แต่มีวัตถุอื่นและขอบเขตของคลาสใหม่
ปิดสาธารณะ::เรียก ( วัตถุ $newthis [, ผสม $... ] ) - ผสม — ผูกส่วนปิดไว้กับ newthis ชั่วคราว และเรียกใช้ด้วยพารามิเตอร์ที่กำหนด
ตัวอย่างการปิด
<?php
class A {
public $nm;
function __construct($x){
$this->nm=$x;
}
}
// Using call method
$hello = function() {
return "Hello " . $this->nm;
};
echo $hello->call(new A("Amar")). "\n";;
// using bind method
$sayhello = $hello->bindTo(new A("Amar"),'A');
echo $sayhello();
?> ผลลัพธ์
โปรแกรมด้านบนแสดงผลดังต่อไปนี้
Hello Amar Hello Amar