Trong bài ngay hôm nay, chúng ta sẽ tìm hiểu cách thức hoạt động của Public, Protected và Private của OOP [Lập trình hướng đối tượng] trong PHP.
1. Mô hình tổng quan
Public: Các đối tượng bên ngoài có thể gọi hàm và biến trong class, hỗ trợ sự kế thừa.
Protected: Các đối tượng bên ngoài không thể gọi được biến và hàm trong class, hỗ trợ sự kế thừa.
Private : Không cho các đối tượng bên ngoài gọi biến và hàm trong class, không hỗ trợ kế thừa.
2. Thí dụ trực quan:
2.1. Public:Giống như cái nhà mà không có cửa vậy, ai cần gì cứ việc vào lấy
Theo ví dụ dưới đây, ta có:
Viết một class cha có tên Person.
Đặt public cho hai biến $name và $age
Khởi tạo hàm tạo và các hàm get/set cho từng biến.
Viết lớp con có tên Female kế thừa lớp cha Person
Thêm biến $local và khởi tạo giống lớp cha Person
Khởi tạo đối tượng bên ngoài gọi đến hàm intro[] bên trong lớp con để in ra giá trị.
DOCTYPE html>
Document
Cổng nhà và cửa nhà đều khóa, trừ người bên trong, người bên ngoài không được lấy dùng cái gì trong nhà
- Thực hiện sửa public ở các biến của class Person và Female thành protected
protected $name;
protected $age;
protected $local;
//Gọi đối tượng từ bên ngoài
$female = new female["Lan", "30", "Ha Noi"];
$female->name;
$female->local;
- Chú ý, đặt chú thích cho lệnh kiểm tra lớp cha xong mới kiểm tra sang lớp con.
DOCTYPE html>
Document
Bây giờ thì nhà của bố mẹ chỉ có bố mẹ được ở, con + người ngoài không được thừa kế bất cứ cái gì nhé
- Thực hiện sửa protected ở các biến của class Person thành private
private $name;
private $age;
private $local;
- Thực hiện gọi từ bên ngoài
DOCTYPE html>
Document
Lấy ví dụ ở class Female ở trên, ta gắn private cho hàm intro[] :
private function intro[]
{
echo "Tên: {$this->name}
Tuổi: {$this->age}
Địa chỉ: {$this->local}";
}
- Thực hiện gọi như sau:
$female = new Female['Lan', '30', 'Ha Noi'];
$female->intro[];
Như vậy, trong lập trình hướng đối tượng chúng ta có 3 mức bảo vệ hàm và biến: Public, Protected và Private.
Hiểu được cách thức cũng như cơ chế hoạt động của 3 thuộc tính này trong PHP để thao tác với biến và hàm linh hoạt và thông minh hơn nhé!
Cảm ơn đã xem và hẹn gặp lại trong những bài viết sau!