ทั้ง define() และ const ใช้ประกาศค่าคงที่ (Constants) ใน PHP
ไวยากรณ์
<?php
const VAR = 'FOO';
define('VAR', 'FOO');
?>
มาดูความแตกต่าง:
- ความแตกต่างพื้นฐาน: const กำหนดค่าคงที่ตอน compile time ส่วน define() ตอน run time
- ไม่สามารถใช้ const ในบล็อกเงื่อนไข (conditional blocks) ได้ แต่ define() ทำได้
<?php if(){ const VAR = 'FOO'; // invalid } if(){ define('VAR', 'FOO'); // valid } ?> - const รับค่า scalar แบบ static (number, string, constants เช่น true, false, null, __FILE__) ส่วน define() รับ expression ใดๆ ได้
- const เป็น case-sensitive เสมอ ส่วน define() สามารถกำหนด case-insensitive ได้โดยส่ง true เป็นอาร์กิวเมนต์ที่ 3
- const ใช้ภายในคลาสหรืออินเทอร์เฟซเพื่อประกาศ class/interface constant ได้ ส่วน define() ไม่ได้
<?php class abc{ const VAR = 2; // valid echo VAR; // valid } class xyz{ define('XUV', 2); // invalid echo XUV; // invalid } ?>