Hướng dẫn dùng reflect property trong PHP

Reflection là gì?

Ngắn gọn nhất thì có thể nói Reflection cung cấp khả năng phân tích cấu trúc bên trong một class bao gồm các: method, property, const, comment và thay đổi [modify] chúng.

Nó dùng để làm gì?

Thật ra là mình cũng ít [không] khi nào dùng đến cái này lắm, nhưng qua tìm hiểu thì thấy nó khá là hữu ích, có thể thay đổi cách làm 1 số chuyện của mình.

Ví dụ đọc code của ai đó mà không biết cái biến này là gì, 1 object hay 1 số, 1 string thì có thể dùng hàm cơ bản của PHP là get_class[]get_class_method[].

Tiếp theo là chúng ta có thể sử dụng Reflection để tạo tài liệu bằng cách get comment của 1 class nào đó, rồi kiểm tra từng method, constructor và class đó để xác định những gì diễn ra đối với đầu vào và đầu ra.

Các hàm Reflection thông dụng

Ví dụ ta dùng get_class[]get_class_methods[]:

var_dump[get_class[$user]];
//App\Models\User

var_dump[get_class_method[$user]];
//Method A
//Method B
//Method C
//Something else

get_class[] trả về 1 string tên của class và get_class_method[] trả về 1 mảng tên các method trong object đó.

Một hàm khác cũng hay dùng đấy là method_exists[]:

class User {

    protected function getUsername[]
    {
        //....
    }

    public function __get[$param]
    {
        $method = 'get' . ucfirst[$param];

        if [method_exists[$this, $method]] {
            return $this->{$method}[];
        }
    }
}

Nhìn cũng đủ hiểu chức năng của cái hàm này là gì rồi đúng không?

PHP Reflection Class

Để dễ hiểu hơn ta có 1 số class như sau:

Chủ Đề