ใช่ มีข้อดีหลายประการในการใช้ฟังก์ชันเวทย์มนตร์ __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() ในโค้ดใหม่เสมอ