1. Closure::call()
Closure :: call () được thêm vào như là một cách tạm
thời để ràng buộc tạm thời một phạm vi đối tượng để đóng và gọi nó. Hiệu suất
hoạt động nhanh hơn nhiều so với bindTo của PHP 5.6.
Các phiên bản trước có sử dụng một phương thức
Closure đó là phương thức Closure bindTo, phương thức này sẽ gọi đến
một đối tượng và gán nó vào hàm closure.
<?php
class A {
private $x = 1;
}
// Closure trong php 7
$getValue = function() {
return $this->x;
};
// Gán kiểu bindTo cho hàm $getValue
$value = $getValue->bindTo(new A, 'A');
print($value());
?>
Kết Quả : 1
2. Closure Call
Các lớp không xác định có thể được định nghĩa bằng
lớp mới. Lớp vô danh có thể được sử dụng thay cho một định nghĩa lớp đầy đủ.
<?php
interface Logger {
public function log(string $msg);
}
class Application {
private $logger;
public function getLogger(): Logger {
return $this->logger;
}
public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}
$app = new Application;
$app->setLogger(new class implements Logger {
public function log(string $msg) {
print($msg);
}
});
$app->getLogger()->log("My first Log Message");
?>
Kết Quả : My first Log Message
3. Lời kết
Chưa có ứng dụng thực tế rõ ràng cho hai hàm này, bài này mình chỉ viết ở mức độ tham
khảo hi vọng có ích cho việc tìm hiểu của các bạn sau này.
No comments:
Post a Comment