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

เปรียบเทียบ define() กับ const ใน PHP


ดังที่เราทราบทั้ง define() และ const ใช้ในการประกาศค่าคงที่ในสคริปต์ PHP

ไวยากรณ์

<?php
   const VAR = 'FOO'
   define('VAR', 'FOO');
?>

เรามาพูดถึงความแตกต่างระหว่างสองสิ่งนี้กัน

  • ความแตกต่างพื้นฐานระหว่างสองสิ่งนี้คือ const กำหนดค่าคงที่ในเวลาคอมไพล์ ในขณะที่ define() กำหนดไว้ ณ รันไทม์
  • เราไม่สามารถใช้ const คีย์เวิร์ดเพื่อประกาศค่าคงที่ในบล็อคแบบมีเงื่อนไข ในขณะที่ใช้ define() เราสามารถบรรลุสิ่งนั้นได้
  • <?php
       if(){
       const VAR = 'FOO'; // invalid
       }
       if(){
       define('VAR', 'FOO'); //valid
       }
    ?>
  • const ยอมรับสเกลาร์แบบคงที่ (ตัวเลข สตริง หรือค่าคงที่อื่นๆ เช่น true, false, null, __FILE__) ในขณะที่ define() ใช้นิพจน์ใดๆ
  • ข้อเสีย คำนึงถึงขนาดตัวพิมพ์เสมอ ในขณะที่ define() อนุญาตให้คุณกำหนดค่าคงที่ที่ไม่คำนึงถึงขนาดตัวพิมพ์โดยการส่งผ่านค่าจริงเป็นอาร์กิวเมนต์ที่สาม

  • const นอกจากนี้ยังสามารถใช้ภายในคลาสหรืออินเทอร์เฟซเพื่อประกาศค่าคงที่ของคลาสหรือค่าคงที่ของอินเทอร์เฟซ ในขณะที่ define() ใช้ไม่ได้ด้วยเหตุผลนี้
  • <?php
       class abc{
          const VAR = 2; // valid
          echo VAR; // valid
       }
    // but
       class xyz{
          define('XUV', 2); // invalid
          echo XUV;// invalid
       }
    ?>
  • ตัวอย่างข้างต้นแสดงให้เห็นว่าเราสามารถประกาศค่าคงที่ภายในคลาสด้วย const คำหลัก แต่ define() ไม่สามารถใช้ประกาศค่าคงที่ภายในคลาสได้