কন্সট্যান্ট এর নাম শুনেই বোঝা যাচ্ছে এর কাজই হলো পরিবর্তন না হওয়া । কনস্ট্যান্ট হিসেবে আমরা খুব সিম্পল ভ্যালু সংরক্ষণ করতে পারি । define
ব্যবহার করে আমরা কন্সট্যান্ট তৈরি করি ।
<?php
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
কন্সট্যান্ট এর নাম সাধারনত বড় হাতের লেখা হয় । নামকরণের ক্ষেত্রে ভ্যারিয়েবলের মতই শুরুতে সংখ্যা ব্যবহার করা যায় না, নামটি কেইস সেনসিটিভ ।
পিএইচপির খুব গুরুত্বেপূর্ণ একটি বিষয় হচ্ছে এক্সপ্রেশন । পিএইচপিতে আমরা মোটামোটি যাই লিখি তার সবই এক্সপ্রেশন । একটি এক্সপ্রেশন এর সবসময়ই একটি ভ্যালু থাকে ।
আমরা যখন একটি ভ্যারিয়েবল কিংবা কন্সট্যান্ট ডিফাইন করি তখন কিন্তু আমরা একটি এক্সপ্রেশন ব্যবহার করছি । যেমন:
<?php
$name = "masnun";
এখানে আমরা $name
ভ্যারিয়েবল এ masnun
স্ট্রিংটি এ্যাসাইন করেছি । এখানে এই "masnun"
অংশটুকু হলো একটি এক্সপ্রেশন যার ভ্যালু হলো স্ট্রিং masnun
।
আবার যখন এই ভ্যারিয়েবলটিকেই পুনরায় আরেকটি ভ্যারিয়েবল এ এ্যাসাইন করছি তখন:
<?php
$nickname = $name;
এখানে কিন্তু $name
অংশটুকু একটি এক্সপ্রেশন যার ভ্যালু হচ্ছে masnun
। এখানে আমরা $nickname
এর ভ্যালু হিসেবে $name
এক্সপ্রেশনের ভ্যালুকে এ্যাসাইন করেছি ।
এক্সপ্রেশনের ব্যাসিকটা বুঝে নেওয়া জরুরী কেননা পিএইচপি এক্সপ্রেশন ভিত্তিক ল্যাঙ্গুয়েজ, পিএইচপিতে নানা ধরণের জটিল জটিল এক্সপ্রেশন ব্যবহার করে পরবর্তীতে আমাদের নানা সমস্যার সমাধান করা লাগবে ।
অপারেটর এক বা একাধিক ভ্যালু কিংবা এক্সপ্রেশনের সম্মিলন ঘটিয়ে একটি নতুন ভ্যালু তৈরি করে । যেমন:
<?php
$a = 23;
$b = 5;
$sum = $a + $b + 2;
এখানে শেষ লাইনে এসে তিনটি ভিন্ন এক্সপ্রেশন এর সমন্বয়ে আমরা নতুন একটি ভ্যালু পাচ্ছি । $a + $b + 2
এটি নিজেও কিন্তু একটি এক্সপ্রেশন । সুতরাং আমরা এভাবেও বলতে পারি, অপারেটরের কাজ হচ্ছে একাধিক এক্সপ্রেশনের সমন্বয়ে নতুন একটি বৃহদাকার এক্সপ্রেশন তৈরি করা ।
শুরুতেই আসুন একটি সহজ অঙ্ক করি:
30 - 4 * 30 / 5 + 4
বলুনতো এটার ফল কেন 10
হবে? কারণ আমরা জানি এখানে সবার আগে ভাগ এবং গুন এর কাজ করতে হবে এরপর যোগ বিয়োগ । এটাই গনিতের নিয়ম, এখানে এই যে আমরা ভাগ এবং গুনকে অগ্রাধিকার দিলাম, এটাই অপারেটর প্রিসিডেন্স । যখন পিএইচপিতে একাধিক এক্সপ্রেশনের মধ্যে আমরা এমন করে অপারেটর ব্যবহার করি তখন কোন কোন অপারেটর অগ্রাধিকার পায় - তাই সঠিক ফলাফল পেতে আমাদেরকে অপারেটর প্রিসিডেন্স সম্পর্কে বিস্তারিত জানতে হবে ।
অপারেটর প্রিসিডেন্স সম্পর্কে আরো বিস্তারিত জানতে পিএইচপি ম্যানুয়ালের এই চ্যাপ্টারটি দ্রষ্টব্য - http://php.net/manual/en/language.operators.precedence.php - পরবর্তীতে এই কন্টেন্টও বাংলায় বিশদভাবে ব্যখ্যা করে লেখার ইচ্ছা আছে ।
গানিতিক অপারেটরগুলো আমরা সবাই কমবেশী চিনি:
<?php
$a = -$a; // মান ঋনাত্বক করা হলো
$sum = 2 + 3; // যোগ
$sub = 6 - 3; // বিয়োগ
$mul = 5 * 6; // গুন
$div = 24 / 3; // ভাগ
$mod = 13 % 2; // ১৩ কে ২ দিয়ে ভাগ করলে ভাগশেষ ১
$exp = 2 ** 3; // ২ টু দি পাওয়ার ৩ = ৮
এ্যাসাইনমেন্ট অপারেটর (=
) এর সাথে আমরা ইতোমধ্যে পরিচিত হয়েছি, এটার মাধ্যমে আমরা ভ্যালু এ্যাসাইন করি ।
<?php
$a = ($b = 4) + 5;
এখন $b
এর মান 4
এবং $a
এর মান হবে 9
। অবজেক্ট টাইপ ব্যতিত প্রায় সকল টাইপের ক্ষেত্রেই এ্যাসাইনমেন্ট অপারেটর ডান পাশের এক্সপ্রেশনের ভ্যালু কপি করে, তাই মূল এক্সপ্রেশনে ব্যবহৃত ভ্যারিয়েবলগুলোর ভ্যালু পরিবর্তন হয় না । তবে আমরা যদি একই চাই যে দুটি ভ্যারিয়েবল ই একই মেমরী ব্লক তথা একই ডাটাকে নির্দেশ করুক সেক্ষেত্রে আমরা একটা &
যোগ করে দিতে পারি নিচের মত করে:
<?php
$a = 3;
$b = &$a;
$a = 5;
echo $b; // এটার মানও পরিবর্তন হয়ে 5 হবে
এটাকে এ্যসাইনমেন্ট বাই রেফারেন্স বলা হয় ।
কম্প্যারিজন অপারেটরগুলো দুটো এক্সপ্রেশনের ভ্যালু কম্পেয়ার করার জন্য ব্যবহার করা হয় । যেমন:
<?php
$a == $b; // TRUE হবে যদি $a আর $b এর ভ্যালু টাইপ কনভার্শনের পর একই হয়
$a === $b; // TRUE হবে যদি $a এবং $b এর ভ্যালু একই এবং এরা একই টাইপের হয়
$a != $b; // TRUE যদি টাইপ কনভার্শনের পর ভ্যালু একই না হয়
$a <> $b; // TRUE যদি টাইপ কনভার্শনের পর ভ্যালু একই না হয়
$a !== $b; // TRUE যদি টাইপ কনভার্শনের পর ভ্যালু একই না হয় অথবা তারা একই টাইপ না হয়
$a < $b; // TRUE যদি $a, $b থেকে ছোট হয়
$a > $b; // TRUE যদি $a, $b থেকে বড় হয়
$a <= $b; // TRUE যদি $a, $b এর সমান অথবা $b থেকে ছোট হয়
$a >= $b; // TRUE যদি $a, $b এর সমান অথবা $b থেকে বড় হয়
মনে রাখতে হবে, যদি আমরা স্ট্রিং এর সাথে নাম্বার কম্পেয়ার করি তবে পিএইচপি অটোমেটিক্যালি স্ট্রিংকে নাম্বারে কনভার্ট করবে । এরপর দুই নাম্বার ভ্যালু কম্পেয়ার করবে । তবে ===
বা !==
এর বেলায়, যেখানে টাইপ সহ কম্পেয়ার করা হয় - এসব ক্ষেত্রে টাইপ কনভার্শন অটোমেটিক্যালি হয় না ।
ইনক্রিমেন্টাল ও ডিক্রিমেন্টাল অপারেটরস:
<?php
++$a // আগে $a এর ভ্যালু এক বাড়িয়ে তারপর $a এর ভ্যালু রিটার্ন করে
$a++ // আগে $a এর ভ্যালু রিটার্ন করে তারপর $a এর ভ্যালু এক বাড়িয়ে দেয়
--$a // আগে $a এর ভ্যালু এক কমিয়ে নেয় তারপর $a এর ভ্যালু রিটার্ন করে
$a-- // আগে $a এর ভ্যালু রিটার্ন করে তারপর $a এর ভ্যালু এক কমিয়ে দেয়
লজিকাল অপারেটরস:
<?php
$a and $b // TRUE যদি দুটোই TRUE হয়
$a or $b // TRUE যদি যে কোন একটা TRUE হয়
$a xor $b // TRUE যদি যে কোন একটা TRUE হয় কিন্তু দুটোই TRUE না হয়
!$a // TRUE যদি $a TRUE না হয়
$a && $b // TRUE যদি দুটোই TRUE হয়
$a || $b // TRUE যদি যে কোন একটা TRUE হয়
নোট: and
, or
এবং ||
, &&
একই কাজ করলেও এদের অগ্রাধিকার ভিন্ন । যেটা আমরা অপারটের প্রিসিডেন্স টেবিলে বিস্তারিত দেখতে পাবো ।
এছাড়া আমরা দুটো স্ট্রিং কে সংযুক্ত করতে .
অপারেটর ব্যবহার করি । যেমন:
<?php
$a = "Hello ";
$b = $a . "World!"; // এখন $b এর ভ্যালু হবে "Hello World!"