Khoá học lập trình PHP/MySQL [Video] Kế thừa OOP - Lập trình php
- 5.0/5.0
- 2k Đăng ký
- Học lập trình
- Tiếng việt
Thông tin khóa học
Mở bài
Kế thừa là một trong những khái niệm cốt lõi của hướng đối tượng — và trong ngữ cảnh Kế thừa OOP - Lập trình php, nó giúp lập trình viên tổ chức mã nguồn theo cách dễ đọc, dễ mở rộng và ít lỗi hơn. Khi bạn viết ứng dụng nhỏ bằng PHP và muốn phát triển thành hệ thống lớn, hiểu rõ kế thừa không chỉ giúp tái sử dụng mã (reuse) mà còn mở đường cho các nguyên tắc thiết kế như SOLID, giảm thiểu sự trùng lặp và tăng tính ổn định của dự án.
Bài viết này đi sâu vào Kế thừa OOP - Lập trình php: từ định nghĩa cơ bản, cú pháp, các tình huống thực tế, đến những anti-pattern cần tránh. Tôi sẽ minh họa bằng ví dụ cụ thể, so sánh với các kỹ thuật khác như composition, interface và trait để bạn biết khi nào nên dùng kế thừa và khi nào nên chọn giải pháp khác. Nếu bạn đang học PHP hướng đối tượng hoặc muốn refactor code procedural sang OOP, đọc kỹ bài này sẽ giúp bạn hiểu rõ cách áp dụng kế thừa một cách an toàn và thực tế.
Kế thừa là gì và vai trò trong OOP (Kế thừa OOP - Lập trình php)
Kế thừa (inheritance) là phép mô tả mối quan hệ “là một” (is-a) giữa các lớp: một lớp con có thể thừa hưởng thuộc tính và phương thức từ lớp cha. Trong thực tế của Kế thừa OOP - Lập trình php, ta thường khai báo class Child extends Parent để hưởng lại logic cơ bản và chỉ ghi đè (override) hoặc mở rộng phương thức khi cần.
Vai trò chính của kế thừa:
-
Tái sử dụng mã: bạn viết logic chung ở lớp cha, lớp con dùng lại mà không lặp lại.
-
Tổ chức biểu diễn domain: mô tả quan hệ thực tế như
Employeelà mộtPerson. -
Hỗ trợ đa hình (polymorphism): code phía caller xử lý
Personmà không biết đó làStudenthayTeacher.
Trong bối cảnh Kế thừa OOP - Lập trình php, kế thừa giúp triển khai các mô hình theo domain rõ ràng: models, controllers, services... Tuy nhiên, cần cân nhắc vì lạm dụng kế thừa dễ tạo ra coupling mạnh giữa các lớp, gây khó khăn khi refactor. Thay vì dùng kế thừa cho mọi tình huống, hãy cân nhắc composition (has-a) khi quan hệ không phải là “là một”.
Lưu ý khi thiết kế: lớp cha nên chịu trách nhiệm duy nhất (Single Responsibility), giảm thiểu các phương thức “không liên quan” để lớp con không bị thừa nhận những trách nhiệm không cần thiết — đây là nguyên lý quan trọng khi áp dụng Kế thừa OOP - Lập trình php vào dự án thực tế.
Cú pháp kế thừa trong PHP và ví dụ cơ bản
PHP hỗ trợ kế thừa bằng từ khóa extends. Dưới đây là ví dụ minh họa phong cách chuẩn trong Kế thừa OOP - Lập trình php:
Giải thích:
-
Studentkế thừaPerson, thừa hưởng thuộc tính$name,$agevà phương thứcintroduce(). -
parent::__construct()gọi constructor của lớp cha để khởi tạo phần chung. -
Student::introduce()override phương thức cha nhưng vẫn tái sử dụng bằngparent::introduce().
Trong Kế thừa OOP - Lập trình php, việc gọi parent:: là phổ biến khi bạn muốn thêm hành vi thay vì thay thế hoàn toàn. Lưu ý sử dụng protected cho các thuộc tính/ phương thức mà chỉ các lớp con cần truy cập — tránh đặt mọi thứ là public.
Ghi đè phương thức (override) và gọi phương thức cha
Ghi đè (method overriding) là khả năng lớp con định nghĩa lại phương thức cùng tên với lớp cha. Đây là cơ chế then chốt để mở rộng hành vi trong Kế thừa OOP - Lập trình php. Ví dụ ở trên minh họa override introduce().
Khi override, bạn có 3 lựa chọn:
-
Thay thế hoàn toàn: lớp con triển khai hành vi mới, không gọi
parent::. -
Mở rộng hành vi: lớp con gọi
parent::method()rồi thêm logic. -
Gọi trước hoặc sau: bạn có thể gọi
parent::method()trước hoặc sau logic lớp con tùy ngữ cảnh.
Ví dụ khác: override xử lý lưu:
Chú ý: Khi bạn override một phương thức, hãy giữ interface (signature) tương thích để không phá vỡ Liskov Substitution Principle — điều này quan trọng khi áp dụng Kế thừa OOP - Lập trình php trong hệ thống lớn, nơi object của lớp con có thể được truyền vào hàm yêu cầu lớp cha.
Access modifiers: public, protected, private trong kế thừa
Trong Kế thừa OOP - Lập trình php, quyền truy cập (access modifier) quyết định phạm vi sử dụng của thuộc tính và phương thức:
-
public: truy cập từ mọi nơi (đối tượng, lớp con, ngoài package). -
protected: truy cập từ lớp hiện tại và lớp kế thừa (con). -
private: chỉ truy cập trong chính lớp khai báo (không cho lớp con).
Ví dụ:
Thiết kế tốt sẽ dùng private cho dữ liệu nội bộ thực sự không muốn lộ, protected cho thành phần mà lớp con cần truy cập. Nếu bạn nhận thấy lớp con phải truy cập nhiều thuộc tính private của cha, có thể đó là dấu hiệu của thiết kế sai — nên cân nhắc đưa logic vào method protected ở lớp cha để đóng gói (encapsulation).
Trong việc áp dụng Kế thừa OOP - Lập trình php, luôn ưu tiên private hoặc protected hơn public để bảo vệ invariants (tính bất biến) của class.
Abstract class, Interface và khi nào dùng kế thừa
PHP hỗ trợ abstract class và interface để định nghĩa hợp đồng. Sự khác biệt và ứng dụng liên quan chặt chẽ tới chiến lược kế thừa.
-
Abstract class: có thể chứa implement và abstract method. Lớp con
extendsabstract class và phải implement các method abstract. Dùng khi muốn cung cấp implementation mặc định cho một số hành vi chung. -
Interface: chỉ định danh sách method mà lớp phải implement; PHP hỗ trợ implements nhiều interface (đa giao diện).
Ví dụ:
Trong Kế thừa OOP - Lập trình php, hãy dùng abstract class khi muốn chia sẻ trạng thái/behavior; dùng interface để định nghĩa contract trừu tượng, đặc biệt khi muốn hỗ trợ đa dạng loại (ví dụ LoggerInterface để dùng nhiều implementation).
Một lưu ý quan trọng: PHP không hỗ trợ multiple inheritance (một lớp kế thừa nhiều lớp cha) nhưng có trait để trộn behavior. Trait giúp bạn tái sử dụng mã mà không phá vỡ cây kế thừa.
Traits và giới hạn của kế thừa: khi nào tránh dùng extends
Traits xuất hiện để khắc phục hạn chế kế thừa đơn. Trait cho phép tái sử dụng phương thức giữa các lớp không liên quan. Ví dụ:
Lưu ý: Kế thừa OOP - Lập trình php rất hữu ích nhưng không phải lúc nào cũng là lựa chọn tốt. Hãy cân nhắc:
-
Nếu mô quan hệ không phải “is-a”, dùng composition (has-a).
-
Tránh cây kế thừa sâu quá — khó hiểu, dễ break.
-
Sử dụng trait để chia sẻ behavior chứ không để che giấu thiết kế kém.
Một anti-pattern hay gặp là lạm dụng kế thừa để tái sử dụng mã dẫn đến tight coupling. Thay vào đó, áp dụng composition hoặc interface để giữ code linh hoạt.
SOLID, Liskov và các nguyên tắc thiết kế liên quan đến kế thừa
Khi áp dụng Kế thừa OOP - Lập trình php, cần tuân thủ các nguyên tắc thiết kế để tránh rủi ro:
-
Single Responsibility (SRP): mỗi lớp chỉ có một trách nhiệm.
-
Open/Closed (OCP): lớp mở để mở rộng (inheritance hoặc composition) nhưng đóng để sửa đổi.
-
Liskov Substitution Principle (LSP): đối tượng con có thể thay thế cha mà không làm thay đổi tính đúng đắn của chương trình. Tránh sửa đổi contract của phương thức khi override.
-
Interface Segregation (ISP): interface nên nhỏ và chuyên biệt.
-
Dependency Inversion (DIP): phụ thuộc vào abstraction (interface), không phụ thuộc vào concrete.
Nguyên tắc LSP đặc biệt liên quan tới kế thừa: nếu bạn làm lớp con trả lỗi hoặc thay đổi hành vi không tương thích, bạn phá vỡ LSP, gây lỗi khó debug khi dùng polymorphism.
Ví dụ thực tế: mô hình nhân viên (Employee) và quản lý (Manager)
Một ví dụ ứng dụng Kế thừa OOP - Lập trình php trong system:
Ở đây Manager là một Employee (is-a). Ta override getPay() để cộng thêm bonus. Khi viết code xử lý thanh toán, bạn có thể gọi getPay() với mảng Employee chứa Manager và Staff mà không cần phân biệt — minh họa đa hình.
Tuy nhiên nếu Manager có nhiều behavior hoàn toàn khác (ví dụ manageTeam() chứa logic rất khác), hãy cân nhắc trừu tượng hoá ra ICanManage interface thay vì ép tất cả logic vào cây kế thừa.
Debugging, testing và refactor khi dùng kế thừa
Khi hệ thống lớn, kế thừa dễ sinh bug do coupling. Một số phương pháp:
-
Viết Unit Test cho mỗi lớp để đảm bảo hành vi khi override không phá vỡ contract.
-
Refactor dần: tách logic chung vào lớp cha hoặc trait, giữ interface ổn định.
-
Sử dụng static analysis (PHPStan, Psalm) để phát hiện violation của LSP hoặc sai kiểu.
-
Document contract bằng PHPDoc để đồng đội hiểu yêu cầu method.
Việc chăm chỉ test và refactor giúp bạn áp dụng Kế thừa OOP - Lập trình php an toàn trong dự án thực tế.
Kết luận
Kế thừa là kỹ thuật mạnh mẽ trong OOP và khi áp dụng đúng, Kế thừa OOP - Lập trình php giúp bạn xây dựng mã nguồn sạch, dễ mở rộng và dễ bảo trì. Tuy nhiên, kế thừa cần được dùng có cân nhắc: ưu tiên SRP, tôn trọng Liskov Substitution Principle, và biết lúc nào nên dùng composition, interface hoặc trait thay vì ép cây kế thừa sâu.
Bắt đầu từ các ví dụ nhỏ — models, services, hoặc các lớp utility — và dần dần refactor code procedural sang các lớp có trách nhiệm rõ ràng. Đồng thời sử dụng PHPUnit, static analysis và code review để đảm bảo các lớp con tuân thủ hợp đồng lớp cha. Khi bạn thành thạo Kế thừa OOP - Lập trình php, việc chuyển sang các framework hiện đại như Laravel hay Symfony sẽ trở nên tự nhiên và hiệu quả. Hãy thực hành ngay: viết một vài lớp, tạo lớp con, ghi đè phương thức và thử nghiệm mọi trường hợp — đó là con đường nhanh nhất để làm chủ kế thừa trong PHP.
Đăng nhập để làm bài kiểm tra
Chưa có kết quả nào trước đó
Chương trình
Phản hồi từ học viên
5
Đánh giá
Câu hỏi thường gặp
B2. Đăng ký học
B3. Hoàn thành mua khoá học
B4. Thanh toán theo hướng dẫn
B5. Đợi chúng tôi kiểm tra thông tin và thêm bạn vào lớp học
Bước 1: Truy cập website https://qviet.vn/teacher/form
Bước 2: Điền thông tin theo yêu cầu. Để bản đăng ký được duyệt nhanh nhất, anh chị hãy điền đủ thông tin nhé.
Bước 3: Click vào "đăng ký ngay" để hoàn thành
Lưu ý:
Link video bài giảng mẫu: Video bài giảng mẫu là căn cứ để Trắc Nghiệm Việt duyệt về hình thức và chất lượng giảng dạy. Vì vậy anh chị hãy điền link này để đăng ký được duyệt nhanh nhất nhé.
Anh chị cũng nên mô tả kỹ về kinh nghiệm giảng dạy để Trắc Nghiệm Việt đánh giá nhé.
Chúc các anh chị và các bạn thành công, sớm gia nhập đội ngũ giảng viên Trắc Nghiệm Việt!
Hình thức học như thế nào?
Việc tạo thói quen học tập sẽ giúp bạn tăng khả năng đạt được mục tiêu. Dành thời gian để học và nhận lời nhắc bằng cách sử dụng công cụ quản lý học tập của bạn.Bước 1: Truy cập mục tài khoản, đăng nhập và chọn Quản lý học tập và ấn Thêm lịch học
Bước 2: Cài đặt lịch học tập của bạn:
- Đặt tiêu đề và chọn khóa học muốn tạo lịch học sau đó ấn tiếp tục.
- Cài đặt tần suất học, thời gian học, thời gian bắt đầu học, lịch thông báo nhắc nhở trước lúc bắt đầu học, ngày kết thúc sau đó bạn ấn tiếp tục.
- Bạn kiểm tra lại lịch học tập lần nữa, nếu đúng bạn ấn Hoàn thành.
- Nếu muốn chỉnh sửa, bạn ấn mục Quay lại và chỉnh lại.
- Khi tạo xong bạn có thể ấn thanh ngang bên phải để xóa, sửa lịch học.
Việc lên lịch học sẽ giúp em bạn dễ dàng đạt được các mục tiêu mong muốn, tăng hiệu quả học tập. Đặc biệt, khi bạn học được 90% nội dung khóa học, bạn sẽ nhận chứng nhận hoàn thành khóa học.
Hình thức học tại Trắc Nghiệm Việt
1. Học như thế nào?- Khóa học tại Trắc Nghiệm Việt được học **online** trên điện thoại hoặc máy tính có kết nối Internet.
- Các video bài giảng đã được biên tập sẵn, học viên có thể học bất cứ lúc nào, không giới hạn thời gian và số lần học.
- Chỉ cần đăng ký và thanh toán một lần.
2. Có thể học trên nhiều thiết bị không?
- Học viên có thể đăng nhập và học trên nhiều thiết bị khác nhau (điện thoại, máy tính, máy tính bảng). Tuy nhiên, tại cùng một thời điểm chỉ **một thiết bị** được phép xem video.
- Truy cập website: https://qviet.vn để đăng nhập và học.
- Với điện thoại hoặc máy tính bảng, học viên có thể tải ứng dụng Trắc Nghiệm Việt tại: https://qviet.vn
3. Có thể học trên Smart TV không?
- Trắc Nghiệm Việt đang phát triển để hỗ trợ học trực tiếp trên Smart TV. Hiện tại, tùy theo từng dòng TV mà có thể mở website và học được hoặc không.
- Bạn có thể thử bằng cách mở trình duyệt trên TV và truy cập: https://qviet.vn
- Trải nghiệm học tập tốt nhất hiện nay là trên **điện thoại** và **máy tính**.
4. Thời hạn sử dụng khóa học?
- Sau khi đăng ký, học viên sẽ sở hữu khóa học **vĩnh viễn**, có thể học đi học lại không giới hạn.
5. Có được tải khóa học về thiết bị không?
- Video bài giảng thuộc bản quyền của Trắc Nghiệm Việt và giảng viên. Học viên **không được tải xuống** dưới bất kỳ hình thức nào để tránh việc phát tán trái phép.
- Khóa học là tài sản trí tuệ và công sức của giảng viên, mong học viên hiểu và tôn trọng quyền sở hữu này.
- Bên dưới mỗi video có mục **Thảo luận**, bạn tích chọn và đặt câu hỏi tại đây. Thông thường trong vòng 24h giảng viên sẽ phản hồi lại bạn.
- Để xem câu trả lời của giảng viên, bạn vào mục **Thảo luận** của bài học đã đặt câu hỏi và tích vào mục trả lời để xem.
Học viên có thể liên hệ trực tiếp với giảng viên qua điện thoại, email, Facebook không?
- Khóa học online, giảng viên có hàng nghìn học viên trên cả nước nên việc liên hệ trực tiếp với giảng viên qua điện thoại là không tiện và Trắc Nghiệm Việt cam kết bảo mật thông tin cá nhân của giảng viên.
- Đa phần các khóa học, giảng viên hỗ trợ học viên qua **mục Thảo luận**. Một số khóa học giảng viên có thể hỗ trợ thêm qua email, Facebook, Zalo hoặc nhóm hỗ trợ trên Facebook. Trong những trường hợp này, giảng viên và Trắc Nghiệm Việt sẽ cung cấp thông tin liên hệ phù hợp.
Bình luận
Tổng quan khóa học
- Bài học 59
- Thời gian Linh hoạt
- Mức độ Mới bắt đầu
- Ngôn ngữ Tiếng việt
- Thời lượng Trọn đời
- Chứng chỉ Không
Trần Văn Điệp
Founder tại QViet.vn
- 5.0/5.0
Mình là Điệp, mình là lập trình viên Full Stack. Hiện mình là Senior Developer, mình là người yêu thích lập trình và viết các mã lệnh và yêu thích khi tạo ra những sản phẩm cho mình. Mình luôn thích thú mỗi khi tối ưu lại chức năng của từng chức năng, làm sao để nó trở lên tối ưu và smooth. Làm tăng trải nghiệm người dùng. Mình cũng rất thích tìm hiểu các công nghệ mới, tìm hiểu các tính năng mới trong các bản nâng cấp mới. Mảng mình làm việc lâu nhất là Mobile (Android & iOS). Mình là người thích chia sẻ kiến thức, những gì mình biết đều muốn chia sẻ ra. Blog này cũng là nơi mình chia sẻ các kiến thức và công nghệ mình đã làm trong các dự án. Blog mình hướng tới là chia sẻ kiến thức kết hợp với trải nghiệm thực tế khi làm ở doanh nghiệp.