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ư Employee là một Person.

  • Hỗ trợ đa hình (polymorphism): code phía caller xử lý Person mà không biết đó là Student hay Teacher.

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:

<?php class Person { protected $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function introduce() { return "Tôi là {$this->name}, tuổi {$this->age}."; } } class Student extends Person { private $studentId; public function __construct($name, $age, $studentId) { parent::__construct($name, $age); $this->studentId = $studentId; } public function introduce() { return parent::introduce() . " Mã SV: {$this->studentId}."; } } $sv = new Student('An', 20, 'SV001'); echo $sv->introduce();

Giải thích:

  • Student kế thừa Person, thừa hưởng thuộc tính $name, $age và phương thức introduce().

  • 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ằng parent::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:

  1. Thay thế hoàn toàn: lớp con triển khai hành vi mới, không gọi parent::.

  2. Mở rộng hành vi: lớp con gọi parent::method() rồi thêm logic.

  3. 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:

class Logger { public function log($msg) { // write to file } } class DbLogger extends Logger { public function log($msg) { parent::log($msg); // file // thêm vào db } }

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ụ:

class A { public $x; protected $y; private $z; } class B extends A { public function test() { echo $this->x; // OK echo $this->y; // OK echo $this->z; // Lỗi: không truy cập private } }

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 classinterface để đị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 extends abstract 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ụ:

abstract class Animal { abstract public function sound(); public function breathe() { // default } } interface Swimmable { public function swim(); } class Dolphin extends Animal implements Swimmable { public function sound() { return 'click'; } public function swim() { return 'swimming'; } }

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ụ:

trait Timestampable { public function createdAt() { ... } public function updatedAt() { ... } } class Post { use Timestampable; } class Comment { use Timestampable; }

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:

class Employee { protected $name; protected $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getPay() { return $this->salary; } } class Manager extends Employee { private $bonus; public function __construct($name, $salary, $bonus) { parent::__construct($name, $salary); $this->bonus = $bonus; } public function getPay() { return parent::getPay() + $this->bonus; } }

Ở đâ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 ManagerStaff 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

Tài Liệu Học PHP & MySQL

Video Lập trình PHP Basic - Biến, Hằng, Toán Tử và Mảng trong PHP - Lập Trình PHP
Echo trong PHP - Hiển thị bảng thông tin sinh viên bằng PHP
Video Hướng dẫn lập trình PHP căn bản với if, else if, else, switch- lập trình PHP
Video Lập trình PHP basic - for, while, do while, foreach, function - lập trình PHP
Video Hướng dẫn lập trình PHP căn bản - Function - lập trình PHP
Sinh ngẫu nhiên mảng gồm N số nguyên trong PHP - Sắp xếp mảng trong PHP
Fibonacci trong PHP - Lập Trình PHP - Khoá học lập trình PHP
Tính tổng các số nguyên từ 0 tới N bằng PHP
In tam giác * bằng PHP, in tam giác sao bằng PHP, in hình tam giác * băng PHP
Hiển thị ngẫu nhiên N quyển sách bằng PHP - Quản lý sách bằng PHP

Video Hướng dẫn học lập PHP căn bản - Tìm hiểu GET/POST - lập trình PHP
Tạo máy tinh căn bản bằng PHP - Calculator in PHP
Video Hướng dẫn tạo dự án calculator bang PHP + JS - Lập trình PHP
Video Ajax: Hướng dẫn tạo máy tính bằng PHP - Sử dụng Ajax - GET/POST form trong PHP - Lập trình PHP
Video Form đăng ký tài khoản bằng PHP (GET/POST)- Form PHP
Form đăng ký tài khoản người dùng - Registation Form trong PHP - Lập trình PHP - Lập Trình PHP MySQL
Video Hướng dẫn chữa bài tập đăng ký & đăng nhập sử dụng GET & POST - Lập trình PHP
Chương trình quản lý sinh viên PHP - Yêu cầu sử dụng GET/POST trong PHP - Lập trình PHP

Video Lập trình PHP căn bản - cookie - lập trình PHP
Video Hướng dẫn tìm hiểu cookie - Quản lý xác minh tài khoản login - cookie - Lập trình PHP/MySQL
Sử dụng cookie trong PHP - quản lý đăng ký & đăng nhập tài khoản trong PHP - Lập Trình PHP

Video Lập trình PHP căn bản - session - lập trình PHP
Video Thành thạo API - Ajax trọng dự án - Thành thạo về Session - Lập trình PHP/MySQL

Video Thực hiện truy vấn dữ liệu từ PHP tới MySql - Khoá học PHP căn bản
Video Kết nối PHP với MySQL (Thực hiện insert) - Khoá PHP căn bản
Video Tối ưu hoá code mysql + php, tạo thư viện chung trong lập trình PHP căn bản
Video Tạo web tin tức - PHP/MySQL
Bài tập - Tạo website bán hàng lư niệm - Login - Lập trình PHP/MySQL
Bài tập - Tạo trang login và register - kết nối CSDL trong PHP - Lập trình PHP/MySQL
Video Thực hiện đăng nhập tài khoản sử dụng php mysql - khoá học PHP căn bản
Thêm - sửa - xoá thông tin sinh viên - Lập trình PHP
Bài tập - Xây dựng cart (giỏ hàng) + checkout (thanh toán) sử dụng Cookie & localStorage - Lập trình PHP/MySQL
VideoCookie: Xây dựng cart (giỏ hàng) + checkout (thanh toán) sử dụng Cookie & localStorage - Lập trình PHP/MySQL
Video Session: Xây dựng web hoàn thiện gồm cart page + checkout page + complete page - Lập trình PHP/MySQL
Bài tập - Thiết kế trang admin quản lý thư viện sử dụng bootstrap template - Lập trình PHP/MySQL
Trang quản lý sản phẩm php - Lập trình PHP
Video Trang quản lý sản phẩm php - Lập trình PHP
Quản lý sách bằng PHP - trang quản trị sách bằng PHP - Lập trình PHP
Viết website quản lý sinh viên PHP & MySQL - Lập Trình PHP
Video Viết website quản lý sinh viên PHP & MySQL - Lập Trình PHP
Video Hướng dẫn phân trang bằng PHP - Lập trình PHP
Viết website quản lý sinh viên PHP & MySQL- Xử lý bằng Ajax - Lập Trình PHP
Bài tập - ứng dụng quản lý ghi chú - Lập trình PHP/MySQL
Xây dựng website bán điện thoại kết nối database (CSDL) - Lập trình PHP/MySQL
Bài tập - Thiết kế website bán hàng lưu niệm - giỏ hàng, thanh toán - Lập trình PHP/MySQL

Video OOP - Lập trình php
Video Kế thừa OOP - Lập trình php
Video Nắm chắc token login - Hướng dẫn login login multi devices, browsers trong lập trình PHP/MySQL
Video Trở thành chuyên gia API Server - Hướng dẫn tất tần tật về API từ Server tới Client - Lập trình PHP

[Examination] Kiểm Tra 60 phút - Test nhanh - Khóa học PHP
Video Kiểm Tra 60 phút - Test nhanh - Khóa học PHP

Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL
Video Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 1
Video Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 2
Video Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Summernote editor - Phần 3
Video Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 4
Video Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 5

Video Hướng dẫn upload website lên server -Hướng dẫn deploy project php trên heroku - Cài đặt Heroku
Nguyễn Văn An
Nguyễn Văn An
2026-06-22 10:33:31
Khóa học cực kỳ chất lượng, giảng viên hướng dẫn rất chi tiết và dễ hiểu. Mình đã áp dụng được ngay vào công việc thực tế.
Trần Thị Bích
Trần Thị Bích
2026-06-19 10:33:31
Nội dung bài giảng được sắp xếp logic, đi từ cơ bản đến nâng cao. Rất phù hợp cho người mới bắt đầu.
Lê Hoàng Hải
Lê Hoàng Hải
2026-06-17 10:33:31
Khóa học hay, tuy nhiên phần bài tập thực hành hơi khó một chút. Cần phải xem lại video vài lần mới làm được.
Phạm Minh Tuấn
Phạm Minh Tuấn
2026-06-10 10:33:31
Tuyệt vời! Đây là khóa học tốt nhất mình từng tham gia. Support nhiệt tình, giải đáp thắc mắc rất nhanh.

Đánh giá

B1. B1. Tạo tài khoản -> Sử dụng để học online
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

Chào mừng các anh chị và các bạn gia nhập đội ngũ Giảng viên QViet. Anh chị vui lòng đăng ký theo hướng dẫn sau:
Bước 1: Truy cập website https://gozic.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!

499,000 VNĐ

1,099,000 VNĐ

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
  • Chứng chỉ Không

avatar
Trần Văn Điệp

Founder tại QViet.vn

×