Anonymous class trong PHP 7 định nghĩa bằng new class. Có thể dùng thay thế định nghĩa class đầy đủ. Tại sao dùng anonymous class?
- Mocking test dễ dàng.
- Triển khai động cho interface dễ dàng, tránh dùng mocking API phức tạp.
- Có thể đặt trong phạm vi nơi chúng được định nghĩa.
- Tránh dùng autoloader cho triển khai đơn giản.
Ví dụ
Mã mẫu dưới:
<?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");
?>
Kết quả
This has created an anonymous class