Trang chủ » Bài 19: Magic methods set và get trong PHP

Bài 19: Magic methods set và get trong PHP

Tác giả:
Đánh giá bài đăng
0
77

Ở bài trước mình đã giới thiệu với mọi người 15 magic methods trong PHP nhưng ở bài đó mình mới chỉ dừng lại ở khái niệm, còn về thực hành hay các vấn đề liên quan đến từng phương thức mình chưa nhắc tới.

Và bài này mình sẽ giới thiệu với mọi người về 2 phương thức __set() và __get().

1, Tổng quan.

Nhìn chung thì cả phương thức set và get trong PHP đều cho phép chúng ta truy cập vào các thuộc tính mà phạm vi của nó không cho phép chúng ta tác động từ bên ngoài như private.

__SET()

-Phương thức __set() sẽ tự động được gọi khi chúng ta thiết lập giá trị cho một thuộc tính không được phép truy cập từ bên ngoài, hoặc không tồn tại.

Cú Pháp:

public function __set($key, $value)
{
    //code
}

Trong đó:

  • $key là tên của thuộc tính cần xét.
  • $value là giá trị của thuộc tính cần xét đó.

VD:

$key = $value;
        } else {
            die('Không tồn tại thuộc tính');
        }
    }

    public function getName()
    {
        echo $this->name;
    }
}

$connguoi = new ConNguoi();

$connguoi->name = "Vũ Thanh Tài";

$connguoi->getName();

//Vũ Thanh Tài
$connguoi->age = 20;
//Không tồn tại thuộc tính

VD: Chứng minh phương thức __set() không được gọi khi đối tượng được truy cập từ bên ngoài hoặc không tồn tại.

name;
    }
}

$connguoi = new ConNguoi();

/*gọi thuộc tính được phép truy cập*/
$connguoi->name = "Vũ Thanh Tài";
$connguoi->getName();
//Vũ Thanh Tài

/*gọi thuộc tính được phép truy cập*/
$connguoi->age = 20;
//Phương thức __set() được gọi

__GET()

-Phương thức __get() sẽ tự động được gọi khi chúng ta lấy ra giá trị của các thuộc tính trong đối mà chúng ta không được phép truy cập nó từ bên ngoài hoặc không tồn tại.

Cú Pháp:

public function __get($key)
{
   //code
}

Trong đó: $key là tên của thuộc tính mà chúng ta muốn lấy ra.

VD:

$key;
        } else {
            die('Không tồn tại thuộc tính');
        }
    }

    public function getName()
    {
        echo $this->name;
    }
}

$connguoi = new ConNguoi();

echo $connguoi->name;
//Vũ Thanh Tài

$connguoi->age;
//Không tồn tại thuộc tính

VD: Chứng minh phương thức __get() không được gọi khi đối tượng được truy cập từ bên ngoài hoặc không tồn tại.

name;
//Kết quả: Vũ Thanh Tài

/*gọi thuộc tính không được phép truy cập*/
$connguoi->age;
//Kết quả: Phương thức __get() được gọi

2, Ưu nhược điểm của __set() và __get().

-Sau khi đọc xong phần trên thì chắc các bạn cũng đã nhận ra được các ưu điểm của nó rồi đúng không? Và ở đây mình sẽ chốt lại các ưu điểm và nhược điểm của nó như sau:

Ưu điểm:

  • Giúp cho chúng ta có thể truy xuất đến các thuộc tính không nhìn thấy được của đối tượng. Nhằm đảm bảo tính đóng gói của hướng đối tượng.
  • Và cũng nhờ nó mà chúng ta có thể hạn chế cũng như custom lại thông báo lỗi khi chúng ta truy cập đến các thuộc tính mà chúng ta không được phép truy cập hoặc không tồn tại.

Nhược điểm:

  • Làm cho chương trình của chúng ta chậm hơn một chút nhưng không đáng kể.

3, Lời kết.

-Ở phía trên mình đã giới thiệu với mọi người về khái niệm, cách sử dụng cũng như ưu nhược điểm của 2 magic methods __set() và __get() trong PHP rồi, từ đó mọi người có thể tự đưa ra kết luận cho mình.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Facebook Messenger Chat Zalo
Messenger Zalo