Constructor, Visibility, Inheritance trong PHP OOP

jk5587725

By jk5587725

Cập nhật Tháng 9 23, 2025

Sau khi đã quen với class, object, property và method trong lập trình hướng đối tượng (OOP), giờ là lúc ta tìm hiểu sâu hơn về 3 khái niệm cực kỳ quan trọng: constructor (hàm khởi tạo), visibility (phạm vi truy cập)inheritance (kế thừa). Đây là nền tảng để bạn viết ra những class gọn gàng, dễ bảo trì và có khả năng mở rộng linh hoạt.


1. Constructor – Hàm khởi tạo

Constructor là một hàm đặc biệt được gọi tự động khi bạn khởi tạo một đối tượng từ class.

class User {
  public $name;

  public function __construct($name) {
    $this->name = $name;
  }

  public function greet() {
    echo "Xin chào, $this->name!";
  }
}

$user = new User("Linh");
$user->greet(); // Output: Xin chào, Linh!

👉 Bạn không cần gọi __construct() trực tiếp – PHP sẽ tự gọi khi bạn new User(...).
👉 Rất tiện để gán giá trị ban đầu hoặc chuẩn bị tài nguyên cần thiết.


2. Visibility – Quy tắc bảo vệ dữ liệu

Bạn có thể giới hạn quyền truy cập của các thuộc tính và phương thức bằng từ khóa sau:

  • public: Dùng ở bất cứ đâu.
  • protected: Chỉ dùng trong class hiện tại và các class kế thừa.
  • private: Chỉ dùng bên trong chính class đó.
class Account {
  private $balance;

  public function __construct($amount) {
    $this->balance = $amount;
  }

  public function getBalance() {
    return $this->balance;
  }
}

$acc = new Account(5000);
// echo $acc->balance; // Error: Cannot access private property
echo $acc->getBalance(); // 5000

👉 Điều này giúp bạn kiểm soát cách dữ liệu được dùng – tránh “rò rỉ” hoặc “sửa bậy”.


3. Inheritance – Kế thừa và tái sử dụng

Kế thừa giúp bạn mở rộng một class đã có mà không cần viết lại từ đầu.

class Animal {
  public function speak() {
    echo "Động vật đang phát ra âm thanh...";
  }
}

class Dog extends Animal {
  public function speak() {
    echo "Gâu gâu!";
  }
}

$dog = new Dog();
$dog->speak(); // Output: Gâu gâu!

👉 Nếu không override (ghi đè), class con sẽ dùng phương thức của class cha.
👉 Bạn có thể dùng parent::methodName() nếu muốn gọi lại hàm cha trong phương thức ghi đè.


Tổng kết nhanh:

Tính năngÝ nghĩa
__constructHàm tự chạy khi khởi tạo đối tượng
VisibilityKiểm soát quyền truy cập (public, private…)
InheritanceClass con kế thừa thuộc tính/phương thức từ cha

Bài học rút ra

OOP không chỉ là cách viết “sang chảnh” hơn của PHP – nó là nền tảng cho code gọn gàng, dễ hiểu, dễ mở rộng. Hiểu rõ constructor, visibility và inheritance sẽ giúp bạn không bị rối khi dự án lớn dần lên, và làm việc dễ dàng hơn với framework như Laravel.

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.