What is Variable in PHP?

PHP তে Variable হলো একটা Box/Container যেখানে আপনি কোন কিছু রাখতে পারবেন। যেমন- আমরা ড্রয়ারে খাতা রাখি, এখানে ড্রয়ার হলো Variable এবং খাতা হলো তার ভ্যালু।

PHP তে Variable declare করার নিয়ম-

PHP তে Variable declare করতে হলে প্রথমে $ (ডলার) সাইন তার একটা একটা নাম দিতে হবে। যেমন- $name। এখানে $name একটা Variable।
মনে রাখতে হবে Variable এর ক্ষেত্রে প্রথমে কখনোই number হবে না। আপনাকে প্রথমে অবশ্যই _ (আন্ডারস্কোর) অথবা কোন letter দিয়ে Variable এর নাম declare করতে হবে। তারপর আপনি চাইলে number of letters, numbers, or underscores দিতে পারবেন। যেমন- $ball, $pen_2, $container_3, $book, $skills, $email, $_my_section ইত্যাদি।

PHP তে Variable এর value assign করার নিয়ম-

PHP তে Variable declare করতে হলে প্রথমে $ (ডলার) সাইন তার এর একটা নাম দিতে হবে। যেমন- $name। এখানে $name একটা Variable।
মনে রাখতে হবে Variable এর ক্ষেত্রে প্রথমে কখনোই number হবে না। আপনাকে প্রথমে অবশ্যই _ (আন্ডারস্কোর) অথবা কোন letter দিয়ে Variable এর নাম declare করতে হবে। তারপর আপনি চাইলে number of letters, numbers, or underscores দিতে পারবেন। যেমন- $ball, $pen_2, $continer_3, $book, $skills, $email, $_my_section ইত্যাদি।
PHP তে Variable এর value assign করার নিয়ম-
আমরা Variable declare করা শিখলাম কিন্তু আমাদের এই Variable এ তো কিছু রাখতে হবে মানে তার value তো assign করতে হবে তাই না? (যদিও assign নাও করা লাগতে পারে)।
তো value assign করতে হলে আপনাকে Variable এর নামের পর = (equal) সাইন ব্যবহার করতে হবে এবং তারপর তার value দিতে হবে। যেমন-

$name = 'Shibbir Ahmed';
$_new_task = 'Need to develop a website';
$email_2 = '[email protected]';

আমরা এখানে ৩ টা Variable declare এবং assign করেছি। যেমন- $name ভেরিয়েবলের
value হলো Shibbir Ahmed, $_new_task ভেরিয়েবলের
value হলো Need to develop a website এবং $email_2 ভেরিয়েবলের
value হলো [email protected]
আপনি যদি খেয়াল করেন তাহলে দেখতে পারবেন যে আমরা Variable এর value কে single quote (‘ ‘ ) দিয়ে লিখেছি মানে বামে এবং ডানে single quote (‘ ‘ ) দিয়েছি। তার কারন হলো আপনি যদি কোন string value বা কোন লেখা লেখেন তাহলে সেই string value বা লেখাকে single quote (‘ ‘ ) দিয়ে ঘিরে দিতে হবে এবং শেষে semicolon (;) দিতে হবে।

PHP তে  statement এর শেষে semicolon (;) দিতে হয়।

PHP তে কতভাবে variable assign করা যায়?

PHP তে ২ ভাবে variable assign করা যায়।
প্রথমটি হলো assign by value আর
পরেরটি হলো assign by reference.

assign by value বলতে কি বুজায়?

স্বাভাবিকভাবে variable সবসময় assigned by value হিসেবে assign হয়। যেমন- আপনি যখন কোন expression কে কোন একটা variable এ assigned করেন তখন মূলত এই expression এর value টা variable এ কপি হয়ে যায়।

PHP -তে যেকোন  value হচ্ছে এক একটা  expression

এখন আপনি যদি এই variable টা অন্য একটি variable এর value হিসেবে দেন তাহলে যেকোন একটা variable এর value পরিবর্তন করলে অন্য variable এর value পরিবর্তন হবে না। এটাকেই বলা হয় assigned by value। যেমন-

$name = 'Amar Course';
$developer = 'Shibbir Ahmed';

এই ২ টি variable – $name এবং $developer এর value হলো Amar Course এবং Shibbir Ahmed। এখন আপনি যদি কোন একটা variable কে পরিবর্তন করেন তাহলে অন্য variable টা পরিবর্তন হবে না কারন value টা assign করা হয়েছে assigned by value হিসেবে।

assign by reference বলতে কি বুজায়?

assign by reference বলতে বুঝায় যে আপনি যদি কোন variable এর value হিসেবে অন্য কোন variable কে দেন তাহলে যে কোন একটা variable এর value পরিবর্তন করলে অন্য variable টির value ও পরিবর্তন হয়ে যাবে। এটাকেই বলা হয় assign by reference.
যে variable কে assign করবেন তার আগে ampersand (&) সাইনটা দিতে হবে। যেমন-

<!DOCTYPE html>
<html>
<head>
	<title>Variable Assigned by Value and Reference</title>
</head>
<body>
<?php
$name 		= 'Amar Course';
$developer 	= $name;
echo $name;
echo '<br/>';
echo $developer;
?>
</body>
</html>

এখানে আমরা ২ টি variable $name এবং $developer নিয়েছি এবং $developer variable এর value হিসেবে $name variable টা দিয়েছি। তাদেরকে ব্রাউজার echo করেছি যার ফলে আমরা output হিসেবে সেই ২ টি variable এর value দেখতে পাচ্ছি – Amar Course এবং Amar Course।
কারন $name variable এর value ছিল Amar Course এবং $developer variable এর value ছিল $name variable যার আসল value ও হলো Amar Course।

এখন আমরা যদি $developer variable এর নতুন কোন value দেই যেমন- New Developer

<!DOCTYPE html>
<html>
<head>
	<title>Variable Assigned by Value and Reference</title>
</head>
<body>
<?php
$name 		= 'Amar Course';
$developer 	= $name;
$developer 	= 'New Developer';
echo $name;
echo '<br/>';
echo $developer;
?>
</body>
</html>

তাহলে আমরা output হিসেবে দেখতে পাবো যে-

আপনি দেখতে পাচ্ছেন যে এখানে $name variable এর value র কোন পরিবর্তন হয় নি $developer variable এর নতুন value দেওয়ার পরও। কারন এটা assign by value হিসেবে assign করা হয়েছিল ।
কিন্তু আমরা যদি এখন প্রথম $developer variable এর value যে $name দিয়েছিলাম তার আগে ampersand (&) দিয়ে দেই

<!DOCTYPE html>
<html>
<head>
	<title>Variable Assigned by Value and Reference</title>
</head>
<body>
<?php
$name 		= 'Amar Course';
$developer 	= &$name;
$developer 	= 'New Developer';
echo $name;
echo '<br/>';
echo $developer;
?>
</body>
</html>

তাহলে দেখবেন যে যেকোন একটা variable এর value পরিবর্তন করলে অন্য একটির variable এর value পরিবর্তন হয়ে যাবে বা একই হয়ে যাবে। যেমন- এখন ২ টি variable এর value ই একই হয়ে গিয়েছে। মানে ২ টি variable ই এখন একই value নির্দেশ করবে।

এটাকেই বলা হয় assign by reference.

Variable scope কি?

Variable scope বলতে বুঝানো হচ্ছে আপনি যদি কোন Variable Declare করেন তাহলে সেই Variable টি কোথা থেকে দেখা যাবে বা আপনি access করতে পারবেন। যেমন- function এর বাহিরে যদি কোন Variable Declare করা হয় তাহলে সেই Variable টি একটি Global variable এবং যদি function এর ভিতরে Declare করা হয় তাহলে সেই Variable টি একটি Local variable হিসেবে কাজ করবে। PHP -তে ২ ধরনরে Variable scope আছে-
১) Local variables (local scope)
২) Global variables (global scope)

১) Local variables (local scope)

Local variables বলতে সেই Variable গুলোকে বুঝায়, যেই variables গুলো কোন একটা block বা restricted boundary এর মধ্যে Declare করা হয়। এই block বা restricted boundary হতে পারে কোন function বা কোন class বা কোন একটা conditional span. আপনি এই Local variables গুলোকে বলতে পারনে যে এই variables গুলো একটা local scope এ আছে। যেমন- নিচের function টি খেয়াল করেন-

<?php
function myTeam () {
	$player = 'Mashrafi.';
	echo 'One of the best first bowler of Bangladesh Team is ' . $player;
}
myTeam();
?>

এখানে myTeam নামে একটা function কে Declare করেছি এবং এই function এর ভিতরে $player নামে একটা variable ও Declare করেছি যার value হলো Mashrafi.। এখানে এই $player variable টাই হলো এই function এর Local variable যা শুধুমাত্র এই function এর ভিতরেই ব্যবহার করা যাবে। যেমন- আমরা এই $player variable টাকে echo করেছি এই function এর ভিতরে এই ভাবে –

echo 'One of the best first bowler of Bangladesh Team is ' . $player;

এখন আপনি যদি function টাকে call করেন-

myTeam();

তাহলে output হিসেবে আমরা দেখতে পাবো-

One of the best first bowler of Bangladesh Team is Mashrafi.

আপনি নিশ্চই খেয়াল করছেন যে, $player variable এর value- Mashrafi এই লেখাকে দেখতে পাচ্ছি।
এখন যদি আপনি function এর বাহিরে থেকে এই variable কে echo করার চেষ্টা করেন যেমন-

echo $player;

তাহলে এই রকম একটা এরর দেখতে পাবেন-

Notice: Undefined variable: player in D:\xampp\htdocs\amarcourse\tutorial\php\index.php on line 8

এখানে বলছে যে Undefined variable: player… তার কারন হচ্ছে আপনি $player variable টাকে function এর বাহির থেকে echo করার চেষ্টা করছেন কিন্তু তা তো আপনি পারবেন না, তাই না? কারন $player variable তো ঐ function এর local variable। আপনি globally মানে function এর বাহির থেকে echo করলে তো আর হবে না।

মনে রাখবেন  local variable টা সাথে সাথে destroy হয়ে যায়  তখনই , যখনই আপনার  function এর কাজ শেষ হয়ে যাবে ।

২) Global variables (global scope)

Global variables বলতে সেই Variable গুলোকে বুঝায় যেই variables গুলোকে function or class এর বাহিরে যে কোন জায়গা থকেে Access করা যায়।
এই Global variables গুলোকে global keyword দিয়ে নির্দেশ করা হয়। এখন আমরা জানলাম যে Global variables কে function or class এর বাহিরে Access করা যায় কিন্তু আমরা যদি চাই যে এই Global variables গুলোকে আমরা function এর ভিতরে ব্যবহার করব, তাহলে কি করব? হ্যাঁ এটা সম্ভব। এই জন্য আমাদেরকে ঐ Global variables গুলোকে function এর ভিতরে global নামে একটা keyword দিয়ে define করতে হবে। যেমন-

<?php
$wicket_keeper = 'Mushfiqur Rahim';
function myTeam () {
	$player = 'Mashrafi.';
	echo 'One of the best first bowler of Bangladesh Team is ' . $player;
	echo '<br/>';
	echo 'And a best wicket keeper is ' . $wicket_keeper;
}
myTeam();
?>

এখানে আমরা আগের উদাহরনটাই ব্যবহার করেছি তবে function এর বাহিরে আমরা একটা variable $wicket_keeper declare করেছি যা একটি global scope এ রয়েছে এবং এই variable টিকে আমরা function এর ভিতরে ব্যবহার করার চেষ্টা করেছি। যেমন-

echo 'And a best wicket keeper is ' . $wicket_keeper;

এখানে দেখতে পাচ্ছেন যে, আমরা $wicket_keeper নামে variable টিকে function এর ভিতরে echo / ব্যবহার করার চেষ্টা করছি। কিন্তু এর output হিসেবে আমরা দেখতে পাবো একটা এরর তথ্য। যেমন-

Undefined variable: wicket_keeper in D:\xampp\htdocs\amarcourse\tutorial\php\index.php on line 8

কেন এরর হলো এখানে? কারন হলো আপনি একটা global scope এর variable কে function এর ভিতরে ব্যবহার করার চেষ্টা করেছেন । কিন্তু তা তো আপনি পারবেন না। তাহলে কিভাবে সম্ভব ?
হ্যাঁ, সম্ভব! এর জন্য আপনাকে global নামে একটা keyword ব্যবহার করতে হবে। এই global নামের keyword টি function এর ভিতরে সেই variable এর আগে যে variable টিকে আপনি function এর ভিতরে ব্যবহার করতে চান তার আগে লিখে দিতে হবে। যেমন-

global $wicket_keeper;

তাহলে আমাদের সম্পূর্ণ function টা হবে এই রকম-

<?php
$wicket_keeper = 'Mushfiqur Rahim';
function myTeam () {
	global $wicket_keeper;
	$player = 'Mashrafi.';
	echo 'One of the best first bowler of Bangladesh Team is ' . $player;
	echo '<br/>';
	echo 'And a best wicket keeper is ' . $wicket_keeper;
}
myTeam();
?>

এখন আপনি দেখতে পাবেন যে $wicket_keeper variable টিকে আপনি সহজেই function এর ভিতর ব্যবহার করতে পারছেন মানে এখন আর কোন এরর দেখা যাচ্ছে না। Output হিসেবে আমরা দেখতে পাবো-

One of the best first bowler of Bangladesh Team is Mashrafi.
And a best wicket keeper is Mushfiqur Rahim

global keyword ছাড়াও আপনি অন্য একটি Super Global Variable ব্যবহার করতে পারেন। তার নাম হলো- $GLOBALS
এটি একটি associative array যার key হলো সেই variable এর নাম যেই variable কে আপনি function এর ভিতরে ব্যবহার করতে চান। যেমন- $GLOBALS[‘wicket_keeper’];
তাহলে, এখন আমাদের function হবে এই রকম-

<?php
$wicket_keeper = 'Mushfiqur Rahim';
function myTeam () {
	$player = 'Mashrafi.';
	echo 'One of the best first bowler of Bangladesh Team is ' . $player;
	echo '<br/>';
	echo 'And a best wicket keeper is ' . $GLOBALS['wicket_keeper'];
}
myTeam();
?>

এখন আপনি যদি অনেকগুলো global variable কে function এর ভিতরে ব্যবহার করতে চান তাহলে কি করবেন? হ্যাঁ, তার জন্য আপনাকে কমা (,) ব্যবহার করতে হবে প্রতিটি global variable এর পর। যেমন-

global $wicket_keeper, $batsman, $bowler;

static variables কি? 

static variable হলো সেই variable যা local scope এ থাকে। যেমনটা আমরা দেখেছিলাম local variable এর ক্ষেত্রে। তাহলে local variable এবং static variable এর মধ্যে পার্থক্য কোথায়? হ্যাঁ, পার্থক্য আছে! যেমন- আমরা জানি যদি কোন function এর execution শেষ হয়ে যায় তাহলে local variable এর value আর থাকে না। উদাহরন দিয়ে আমরা যদি দেখি-

<?php
function counting () {
	$number = 1;
	echo 'I am counting from ' . $number . '<br/>';
	$number++;
}
counting();
counting();
counting();
?>

এখানে আমরা একটি function declare করেছি যার নাম হলো counting এবং এর ভিতরে একটি local variable $number declare করেছি যার value হলো 1। এরপর একটা লেখার মাধ্যমে এই variable টি echo করেছি। সবশেষে এই variable টিকে আমরা increment করেছি।
এরপর আমরা function টিকে ৩ বার call করেছি। যেমন-

counting();
counting();
counting();

এখান output হিসেবে আমরা আশা করি যে, প্রতিবার counting ফাংশটি call করার পর এর ভিতরে যে local variable টি আছে তার value ১ করে বাড়বে । মানে output টি আমরা আশা করি যে এই রকম হবে-

I am counting from 1
I am counting from 2
I am counting from 3

তবে আমাদের আশা গুড়ে বালি 🙁 । কারন আমরা দেখতে পাচ্ছি যে –

I am counting from 1
I am counting from 1
I am counting from 1

এখানে দেখা যাচ্ছে যে আমাদের local variable এর value increment হয়নি। যতবারই আমরা function টিকে call করি না কেন ততবারই আমাদরেকে $number variable এর value 1 দেখাচ্ছে। তার করন হলো আমরা জানি যে একটা function যখন কাজ সম্পূর্ণ করে ফেলে তখন সেই function এর ভিতরের local variable এর value আর মনে থাকে না function এর। স্বার্থপর তাই না 🙁 ?
না 🙂 আপনি function কে বলে দিতে পারবেন যে, আমার local variable এর value টা মনে রাখো। আর তার জন্য আমাদের ব্যবহার করতে হবে static নামে একটি keyword. যেমন-

static $number = 1;

এর মানে হলো function এর কাজ যখন শেষ হয়ে যাবে তখন $number variable এর সর্বশেষ value টি মনে রাখবে এই function। এখন আমরা যদি সম্পূর্ণ কোডটি আবার লিখি তাহলে-

<?php
function counting () {
	static $number = 1;
	echo 'I am counting from ' . $number . '<br/>';
	$number++;
}
counting();
counting();
counting();
?>

এখন output হিসেবে আমরা দেখতে পাবো-

I am counting from 1
I am counting from 2
I am counting from 3

এখন দেখা যাচ্ছে যে function এর ভিতরে local variable এর সর্বশেষ value টি মনে রাখছে যার কারনে আমরা $number variable এর value বৃদ্ধি হচ্ছে ১ করে। ১ করে কিভাবে? তাহলে খেয়াল করুন-
আমরা counting(); function টিকে প্রথমে ১ বার call করছি। যার ফলে function এর ভিতরে $number variable এর মান সর্বশেষ হয়েছে ২ কিন্তু এই ২ এখনো দেখাচ্ছে না তার কারন হলো আমরা increment করার পর এই ২ কে তো আর দেখাচ্ছি না, তাই না? দেখাচ্ছি শুধু এই লাইনটা-

echo 'I am counting from ' . $number . '<br/>';

আর এই লাইনের আগে তো আমরা $number variable এর value ১ করে দিয়ে এসেছিলাম যার ফলে counting(); function টিকে প্রথমবার call করার ফলে ১ দেখতে পাচ্ছি।
এবার আমরা যখন আবার এই counting() ; function টিকে দ্বিতীয় বার call করব তখন আমাদের function এর ভিতরে $number variable এর value হবে ২। কেন? কারন আগেরবার তো আপনি $number variable টি কে increment করে দিয়ে আসছিলেন যা এই $number variable টি মনে রেখেছে। এভাবে তৃতীয় বার function call করার ফলে আমরা দেখতে পারবো ৩।

Variable variables কি?

variable variable হলো এমন একটা variable যেই variable টি তৈরী হয় অন্য একটি variable এর value থেকে। যেমন- আমরা ২ টি Variable declare করেছি $siteName এবং $$siteName ( খেয়াল করুন ২ টি $ (ডলার) সাইন রয়েছে) এবং তাদের value হলো যথাক্রমে- amar এবং course।

$siteName 	= 'amar';
$$siteName 	= 'course';
echo $siteName;
echo '<br/>';
echo $amar;
echo '<br/>';

এখানে Variable $siteName এর value হলো amar। এখন যদি আপনি আবার আরো একটি Variable $$siteName নেন ( খেয়াল করুন ২ টি $ (ডলার) সাইন রয়েছে) তাহলে নতুন আরো একটি Variable $amar পাওয়া যাবে।
কারন হলো শুধু Variable $siteName এর value তো হলো amar। এখন প্রথম $ (ডলার) সাইন এবং Variable $siteName এর value মিলে হয়েছে নতুন আরো একটি Variable $amar। নিচের ছবিটি খেয়াল করুন, তাহলেই বুঝতে পারবেন ব্যাপারটা।

এখন আপনি যদি Variable $siteName এবং $amar কে echo করনে তাহলে output হিসেবে দেখতে পাবেন –

amar
course

এই পদ্ধতিকেই বলা হয় Variable variables.

Leave a Comment