name = $name; $this->age = $age; self::$lifecycleLogs[] = "[__construct] Đã khởi tạo đối tượng Student: {$this->name} ({$this->age} tuổi)."; } public function display(): string { return "Sinh viên: " . htmlspecialchars($this->name) . " — Tuổi: " . $this->age . " (Thuộc tính private)"; } public function getName(): string { return $this->name; } public function getAge(): int { return $this->age; } public function __destruct() { $msg = "[__destruct] Đối tượng Student '{$this->name}' ({$this->age} tuổi) đã bị hủy!"; self::$lifecycleLogs[] = $msg; // Hiển thị thông báo hủy khi kết thúc script hoặc khi unset() echo '
Destructor tự động gọi: ' . htmlspecialchars($msg) . '
'; } } $customStudent = null; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = trim($_POST['name'] ?? ''); $age = (int)($_POST['age'] ?? 0); if ($name !== '' && $age > 0) { $customStudent = new Student($name, $age); } } // Khởi tạo các đối tượng mẫu $student1 = new Student("Nguyễn Văn An", 20); $student2 = new Student("Trần Thị Bích Ngọc", 21); ?> Bài 02 - Constructor & Destructor (Student) | Lab 02 OOP

Bài 02: Constructor, Destructor & Thuộc tính private

Class Student với private $name, $age, __construct(), display() và __destruct()

Khởi tạo đối tượng Student mới
Kết quả gọi phương thức display()
  • display() ?>
  • display() ?>
  • Vừa tạo display() ?>
Nhật ký vòng đời đối tượng (Constructor & Destructor)

Khi kết thúc trang PHP (hoặc gọi unset()), hàm hủy __destruct() sẽ tự động được kích hoạt cho từng đối tượng: