একটি কনস্ট্যান্ট হলো একটি নামযুক্ত মান যা, একটি ভ্যারিয়েবলের থেকে আলাদাভাবে, একবার সেট হয়ে গেলে আর কখনো বদলানো যায় না। যখনই কোনো মান স্ক্রিপ্ট চলার সময় সত্যিকারভাবে কখনো বদলানো উচিত না — যেমন একটি সর্বোচ্চ ফাইল সাইজ, একটি ট্যাক্স রেট, একটি সাইটের নাম — তখন এটি ব্যবহার করুন।
<?php
define("SITE_NAME", "Learn Computer Academy");
echo SITE_NAME;
?>লক্ষ্য করুন কনস্ট্যান্টে $ সিজিল থাকে না, আর প্রথা অনুযায়ী এগুলো UPPER_SNAKE_CASE-এ লেখা হয়, যাতে এক নজরে সাধারণ ভ্যারিয়েবল থেকে দৃশ্যত আলাদা বোঝা যায়।
const কীওয়ার্ড একই কাজ করে, একটু ভিন্ন নিয়মে — এটি শুধু একটি ফাইলের top level-এ বা একটি ক্লাসের ভেতরে ব্যবহার করা যায় (এই অংশের পরে ক্লাস নিয়ে আপনি পরিচিত হবেন), আর এর মান হিসাব করার বদলে compile time-এই জানা থাকতে হবে:
<?php
const MAX_UPLOAD_SIZE = 5242880; // 5 MB, in bytes
echo MAX_UPLOAD_SIZE;
?><?php
define("PI", 3.14159);
// define("PI", 3.14); // Fatal error — PI is already defined
?>একটি কনস্ট্যান্ট পুনরায় সংজ্ঞায়িত করার চেষ্টা একটি warning নয়, একটি fatal error — PHP পুরো স্ক্রিপ্ট থামিয়ে দেয়। এটাই একটি কনস্ট্যান্টের আসল উদ্দেশ্য: একবার সেট হয়ে গেলে, এটি একটি গ্যারান্টি, কোনো পরামর্শ নয়।
বাস্তবে const বনাম define()
প্রতিদিনের PHP কোডে, আগে থেকে জানা মানের জন্য define()-এর চেয়ে const বেশি প্রচলিত, কারণ এটি একটু দ্রুত আর অন্য ভাষার সাথে বেশি সামঞ্জস্যপূর্ণভাবে পড়া যায়। define() তখনও দরকারি যখন একটি কনস্ট্যান্টের মান শর্তসাপেক্ষে হিসাব করা প্রয়োজন, যা const অনুমতি দেয় না।