ดังที่เราทราบทั้ง 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() ไม่สามารถใช้ประกาศค่าคงที่ภายในคลาสได้