Phương thức __callStatic
Phương thức __callStatic là một phương thức ma thuật trong PHP, được tự động gọi khi cố gắng gọi một phương thức tĩnh không tồn tại hoặc không thể truy cập. Tham số đầu tiên của nó nhận tên phương thức được gọi, tham số thứ hai - một mảng các đối số được truyền.
Cú pháp
public static function __callStatic(string $name, array $arguments);
Ví dụ
Tạo một lớp với phương thức __callStatic và thử gọi một phương thức tĩnh không tồn tại:
<?php
class MyClass {
public static function __callStatic($name, $args) {
echo "Đã gọi phương thức tĩnh '$name' với các đối số: ";
print_r($args);
}
}
MyClass::nonExistentMethod(1, 2, 3);
?>
Kết quả thực thi mã:
Called static method 'nonExistentMethod' with arguments: [1, 2, 3]
Ví dụ
Triển khai một facade đơn giản để tạo các đối tượng thuộc các kiểu khác nhau:
<?php
class Factory {
public static function __callStatic($name, $args) {
if (strpos($name, 'create') === 0) {
$className = substr($name, 6);
return new $className(...$args);
}
throw new Exception("Method $name not found");
}
}
class User {}
$user = Factory::createUser();
var_dump($user instanceof User);
?>
Kết quả thực thi mã:
true