Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

มีข้อได้เปรียบใด ๆ ในการใช้ __construct() แทนชื่อคลาสสำหรับตัวสร้างใน PHP หรือไม่?


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