Có, dùng phương thức ma thuật __construct() thay vì tên lớp mang lại lợi ích:
- Hỗ trợ nguyên tắc DRY: Đổi tên lớp không cần sửa constructor.
- Gọi constructor cha dễ dàng: Trong lớp con, dùng
parent::__construct().
Ví dụ
<?php
class MyClass {
public function __construct() {
echo 'Lớp "' . __CLASS__ . '" đã được khởi tạo!' . "\n";
}
}
class ChildClass extends MyClass {
public function __construct() {
parent::__construct();
echo "Trong constructor lớp con";
}
}
$obj = new ChildClass();
?>
Kết quả
Lớp "MyClass" đã được khởi tạo!
Trong constructor lớp con
Lưu ý
__CLASS__là hằng ma thuật trả về tên lớp hiện tại.- Constructor kiểu cũ (tên lớp) DEPRECATED từ PHP 7.0 và sẽ bị xóa. Luôn dùng
__construct()cho code mới.