ใช่ มีข้อดีหลายประการในการใช้ฟังก์ชันเวทย์มนตร์ __construct() แทนชื่อคลาส ดังต่อไปนี้ −
- แนะนำฟังก์ชันเวทย์มนตร์ __construct ใน PHP 5.4 ข้อดีอย่างหนึ่งของการใช้ __construct() แทน ClassName() เป็นคอนสตรัคเตอร์คือ ถ้าคุณเปลี่ยนชื่อคลาส คุณไม่จำเป็นต้องอัปเดตคอนสตรัคเตอร์ที่รองรับแนวคิด DRY(อย่าทำซ้ำตัวเอง)
- ถ้าคุณมีคลาสลูก คุณสามารถเรียก parent::__construct() เพื่อเรียกตัวสร้างพาเรนต์ในวิธีที่ง่าย
ตัวอย่าง
<?php
class myclass{
public function __construct(){
echo 'The class "', __CLASS__, '" was initiated!'."\n";
}
}
class childclass extends myclass{
public function __construct() {
parent::__construct();
print "In SubClass constructor ";
}
}
$myobj = new childclass();
?> ผลลัพธ์
The class "myclass" was initiated! In SubClass constructor
หมายเหตุ
"__CLASS__" คือสิ่งที่เรียกว่าค่าคงที่เวทย์มนตร์ ซึ่งในกรณีนี้ จะคืนค่าชื่อของคลาสที่มันถูกเรียก
คอนสตรัคเตอร์แบบเก่าเลิกใช้แล้วใน PHP 7.0 และจะถูกลบออกในเวอร์ชันต่อๆ ไป คุณควรใช้ __construct() ในโค้ดใหม่เสมอ