Phương thức __invoke
Phương thức ma thuật __invoke cho phép một thể hiện của lớp được gọi như một hàm.
Khi một đối tượng được gọi như một hàm, PHP sẽ tự động gọi phương thức này.
Phương thức có thể nhận các tham số và trả về giá trị, giống như một hàm thông thường.
Cú pháp
class MyClass {
public function __invoke(...$args) {
// triển khai
}
}
Ví dụ
Tạo một lớp với phương thức __invoke và gọi đối tượng như một hàm:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Kết quả thực thi mã:
'Hello, John!'
Ví dụ
Sử dụng __invoke với nhiều tham số:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Kết quả thực thi mã:
8
Ví dụ
Kiểm tra xem một đối tượng có thể gọi được không bằng is_callable:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Kết quả thực thi mã:
false
true
Xem thêm
-
phương thức
__construct,
là hàm tạo của lớp -
phương thức
__toString,
cho phép đối tượng được biểu diễn dưới dạng chuỗi