แนะนำตัว
ฟังก์ชันที่ไม่ระบุชื่อ (เรียกอีกอย่างว่าแลมบ์ดา) ส่งคืนอ็อบเจ็กต์ของ การปิด ระดับ. คลาสนี้มีวิธีการเพิ่มเติมบางอย่างที่ช่วยให้สามารถควบคุมฟังก์ชันที่ไม่ระบุตัวตนเพิ่มเติมได้
ไวยากรณ์
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