Anonymous classes ใน PHP 7 สามารถกำหนดได้ด้วย new class สามารถใช้แทนการกำหนดคลาสเต็มรูปแบบได้ เหตุไหนต้องใช้ anonymous classes?
- Mocking tests ทำได้ง่าย
- Dynamic implementations สำหรับ interfaces สร้างได้ง่าย หลีกเลี่ยง complex mocking APIs
- สามารถวางในขอบเขตที่พวกเขาถูกกำหนด
- หลีกเลี่ยงการใช้ autoloader สำหรับการ implement 简单
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
<?php interface a_logger { public function log(string $msg); } class App { private $logger; public function getLogger(): a_logger { return $this->logger; } public function setLogger(a_logger $logger) { $this->logger = $logger; } } $app = new App; $app->setLogger(new class implements a_logger { public function log(string $msg) { print($msg); } }); $app->getLogger()->log("This has created an anonymous class"); ?>ผลลัพธ์
จะได้ผลลัพธ์ดังนี้:
This has created an anonymous class