যা所周知 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() যেকোনো এক্সপ্রেশন নিতে পারে।
- const সবসময় কেস-সেনসিটিভ, কিন্তু define() থার্ড আর্গুমেন্ট হিসেবে
trueপাস করলে কেস-ইনসেনসিটিভ কনস্ট্যান্ট ডিফাইন করতে দেয়। - const ক্লাস বা ইন্টারফেসের ভিতরে ক্লাস কনস্ট্যান্ট বা ইন্টারফেস কনস্ট্যান্ট ডিক্লেয়ার করতে ব্যবহার করা যায়, কিন্তু define() এই কাজে ব্যবহার করা যায় না।
<?php class abc{ const VAR = 2; // valid echo VAR; // valid } // but class xyz{ define('XUV', 2); // invalid echo XUV; // invalid } ?>- উপরোক্ত উদাহরণে দেখা যায় const কিওয়ার্ড দিয়ে ক্লাসের ভিতরে কনস্ট্যান্ট ডিক্লেয়ার করা যায় কিন্তু define() দিয়ে ক্লাসের ভিতরে কনস্ট্যান্ট ডিক্লেয়ার করা যায় না।