[PHP nâng cao] Bài 4: Tính kế thừa trong PHP

Tính kế thừa trong php là một trong ba tính chất quan trọng của lập trình hướng đối tượng, nó đòi hỏi sự logic về phân tích các đối tượng trong phần mềm để từ đó đưa ra những mô hình design pattern giúp việc nâng cấp, bảo trì phần mềm dễ dàng hơn. Đây là tính chất được coi là quan trọng nhất bởi hầu hết các Framework trong PHP đều có sử dụng tính kế thừa, vì vậy nếu bạn đã xác định theo con đường lập trình PHP thì ắt phải hiểu về kế thừa.

Tính kế thừa trong PHP

1. Tính kế thừa là gì?

Nhìn vào hình ta thấy 2 đối tượng Động VậtCon Trâu có những đặc điểm chung và riêng. đối tượng Con trâu chỉ có một đặc tính khác đó là nó có sừng, còn đối tượng động vật thì không có. Vậy ta có nhận xét như sau: Con trâu cũng là một động vật nên nó có những đặc tính của động vật, hay nói cách khác nó có những đặc điểm và hành động của động vật, vì vậy con trâu có thể kế thừa nhưng đặc điểm và phương thức của động vật.

Đấy là ta đang nói đến tính kế thừa của các đối tượng trong thế giới thực, còn trong lập trình thì như thế nào ?

Nếu khai báo thông thường thì ta sẽ tạo hai class như sau:


Lớp Con Trâu:


Rõ ràng 2 đối tượng Động Vật và Con Trâu có những thuộc tính và phương thức giống nhau tại sao ta lại phải khai báo 2 đối tượng dài như vậy? Vì thế trong lập trình hướng đối tượng cung cấp chúng ta một tính chất để giải quyết vấn đề này đó là tính kế thừa.

Cú pháp như sau:


Sau khi khai báo như vậy thì classCon sẽ có tất cả những thuộc tính, phương thức của classCha nên nó không cần phải viết lại.

Bài toán trên sẽ viết lại dưới dạng kế thừa như sau:

2. Gọi các phương thức và thuộc tính của lớp cha

Sau khi kế thừa thì lớp có sẽ có những thuộc tính và phương thức ở lớp cha, vậy làm thế nào để lớp con có thể truy xuất đến những thuộc tính và phương thức đó? Ta sẽ tìm hiểu thông qua hai cách gọi đó là gọi từ bên trong lớp con và gọi từ bên ngoài lớp.

Gọi bên trong lớp con

Như khái niệm tính kế thừa, lớp con kế thừa từ lớp cha nên tất cả các phương thức và thuộc tính đều coi như là của nó (coi như chứ không phải là của nó hẳn) nên cách gọi cũng như cách nó gọi các phương thức thuộc tính của nó, đó là từ khóa $this->thuoctinh, $this->phuong_thuc().

Tuy nhiên để phân biệt hàm nào của cha, hàm nào của con người ta hay gọi bằng từ khóa: parent::thuoctinh, parent::phuong_thuc().

Ví dụ:


Trong bài này chúng ta đã tìm hiểu khái niệm tính kế thừa trong lập trình hướng đối tượng và thể hiện tính kế thừa trong php, qua các ví dụ các bạn biết cách gọi thuộc tính và phương thức của đối tượng cha từ bên trong lớp con và bên ngoài lớp con.

Nguồn: Bài giảng lấy từ Freetuts, 1 người bạn ở Daklak của mình
http://freetuts.net/tinh-ke-thua-trong-php-30.html

Leave a Reply


*