PHP extends

Khái niệm về PHP extends

Trong PHP, từ khóa extends được sử dụng để kế thừa một lớp (class) từ lớp khác. Điều này cho phép lớp con (subclass) kế thừa các thuộc tính và phương thức của lớp cha (parent class), giúp tái sử dụng mã và tổ chức mã nguồn một cách hiệu quả hơn.

Cách thức hoạt động của extends

Khi một lớp kế thừa từ một lớp khác, lớp con tự động có quyền truy cập vào tất cả các thuộc tính và phương thức của lớp cha (trừ những phương thức/thuộc tính được đánh dấu là private). Điều này cho phép bạn mở rộng và tùy chỉnh hành vi của lớp cha mà không cần phải viết lại mã hoàn toàn từ đầu.

Cú pháp cơ bản

class ParentClass {
    public function sayHello() {
        echo "Hello from ParentClass!";
    }
}

class ChildClass extends ParentClass {
    public function sayHello() {
        echo "Hello from ChildClass!";
    }
}

$child = new ChildClass();
$child->sayHello(); // Outputs: Hello from ChildClass!

Lợi ích của việc sử dụng extends

  • Giảm thiểu mã lặp lại: Bạn có thể sử dụng lại mã từ lớp cha mà không cần viết lại.
  • Dễ dàng bảo trì: Khi bạn sửa đổi mã trong lớp cha, các lớp con cũng sẽ được cập nhật tự động.
  • Cải thiện khả năng mở rộng: Bạn có thể thêm các chức năng mới vào lớp con mà không làm ảnh hưởng đến lớp cha.

Những điều cần lưu ý

  • Mỗi lớp chỉ có thể kế thừa từ một lớp cha (PHP không hỗ trợ đa kế thừa).
  • Phương thức trong lớp con có thể ghi đè (override) phương thức trong lớp cha, nhưng cần phải có cùng tên.
  • Có thể sử dụng từ khóa parent để gọi phương thức của lớp cha trong lớp con.

Ví dụ về sử dụng từ khóa parent

class ParentClass {
    public function greet() {
        echo "Hello from ParentClass!";
    }
}

class ChildClass extends ParentClass {
    public function greet() {
        parent::greet(); // Gọi phương thức greet() từ lớp cha
        echo " And Hello from ChildClass!";
    }
}

$child = new ChildClass();
$child->greet(); // Outputs: Hello from ParentClass! And Hello from ChildClass!

Kết luận

Việc sử dụng extends trong PHP giúp bạn xây dựng các ứng dụng theo cách có tổ chức và hiệu quả hơn. Điều này không chỉ giúp giảm thiểu mã nguồn mà còn tăng khả năng bảo trì và mở rộng cho các dự án lập trình của bạn.