PHP Reference Variable কি ?
PHP Reference Variable হচ্ছে কোনো একটা নির্দিষ্ট variable এর value বা content এ ভিন্ন ভিন্ন Variable নামে ব্যবহার করতে পারা। অনেকটা Windows OS এর Shortcut Links অথবা Linux OS এর Symbolic Links এর মতো। PHP তে Reference ঘোষণা করতে হলে , Variable এর সামনে একটা & চিহ্ন (ampersand sign) দিতে হয়।
PHP তে Reference Variable দিয়ে আমরা কি করতে পারি?
PHP তে Reference ব্যবহার করে আমরা তিনটি মৌলিক কাজ করতে পারি
- Assigning by Reference বা একই content বা value তে দুইটি variable কে assign বা নির্ধারিত করা
- Passing by Reference বা Reference দিয়ে কোনো Variable কে function এ পাঠানো
- Returning References বা function থেকে Reference Return করা।
Assigning by Reference কি?
PHP তে যখন একই content বা value এর জন্য দুইটি variable কে assign বা নির্ধারিত করা হয় , PHP এর পরিভাষায় একে বলা হয় Assigning by Reference. নিচের উদাহরণ থেকে আরেকটু ভালো ভাবে বুঝে নেয়া যাক
<?php
$a = "Hi there";
$b = $a;
$b = "See you later";
echo $a; // Displays "Hi there"
echo $b; // Displays "See you later"
?>
ব্যাখ্যা: উপরের কোডে $a varible কে $b তে assign বা নির্দিষ্ট করার পর ও $a এবং $b দুইটি সম্পূর্ণ স্বাধীন দুইটি ভ্যারিয়েবল। এবং দুইটি ভ্যারিয়েবলের Output বা ফলাফল সম্পূর্ণ ভিন্ন। $b ভ্যারিয়েবল তার সর্বশেষ Value “See you later” ই ফলাফল হিসাবে দেখাচ্ছে। $a variable এর value হিসাবে “Hi There” দেখাচ্ছেনা। এখন আমরা যদি $a variable কে $b এর সাথে reference করে দেই, তাহলে $a এবং $b দুটি variable ই সবসময় একই value ধারণ করবে।
চলুন নিচের উদাহরণ থেকে বুঝে নেয়া যাক :
<?php
$a = "Hi there";
$b = &$a;
$b = "See you later";
echo $a; // Displays "See you later"
echo $b; // Displays "See you later"
?>
ব্যাখ্যা:শুধু মাত্র reference এর কারণে আমরা দুইটা Variable এর Value সব সময় একই পাবো। আবার $a এর Value যদি পরিবর্তন করেন , তাহলে $b এর value ও পরিবর্তন হয়ে যাবে। নিচের উদাহরণ লক্ষ্য করুন :
<?php
$a = "Hi there";
$b = &$a;
$b = "See you later";
$a="GoodBye!";
echo $a; // Displays "GoodBye!"
echo $b; // Displays "GoodBye!"
Passing by Reference কি?
PHP তে Reference দিয়ে যখন কোনো Variable কে function এ পাঠানো হয়। তখন তাকে বলা হয় Passing By Reference. আর এই কাজটি করতে হলে আপনাকে PHP তে Function Define করার সময় Parameter এর আগে একটা & চিহ্ন (ampersand sign) দিতে হয়। আর এতে সুবিধা হচ্ছে function এর ভিতরে Parameter এর Value পরিবর্তন হওয়ার সাথে সাথে আপনার পাঠানো Variable টির Value ও পরিবর্তন হয়ে যাবে । নিচের উদাহরণ থেকে দেখা যাক।
function goodbye( &$greeting ) {
$greeting = "See you later";
}
$myVar = "Hi there";
goodbye( $myVar );
echo $myVar; // Displays "See you later"
ব্যাখ্যা:লক্ষ্য করুন Function এর ভিতরের Parameter $greeting এর Value “See you Later” হওয়াতে Function এর বাহিরের Variable $myVar এর Value “Hi there” এর পরিবর্তে “See you later ” হয়ে গেছে।
আরো একটা উদাহরণ দেখি :
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
echo $a; // $a is 6 here
?>
ব্যাখ্যা:এখানেও একইভাবে Function এর ভিতরের Parameter $varএর Value Increment হওয়াতে Function এর বাহিরের Variable $aএর Value 5 এর পরিবর্তে 6 হয়ে গেছে।
Returning References কি?
PHP তে Reference সহ যখন কোনো Variable কে function থেকে return বা প্রত্যাবর্তন করা হয় । তখন তাকে বলা হয় Returning By Reference. আর এই কাজটি করতে হলে আপনাকে PHP তে function এর নামের আগে একটা & চিহ্ন (ampersand sign) দিতে হবে। সেই সাথে আপনি যখন কোনো variable এ function call করবেন, তখনও (=) চিহ্ন (equal sign) এর সাথে একটা & চিহ্ন (ampersand sign) দিতে হবে। আর এতে সুবিধা হচ্ছে আপনি যেই variable এর মধ্যে function টি call করলেন , সেই variable এর value পরিবর্তন হলে function এর return value ও পরিবর্তন হয়ে যাবে। । নিচের উদাহরণ থেকে দেখা যাক।
<?php
$a = 10;
function &test() {
global $a;
return $a;
}
$b =&test();
$b--;
echo "\$a = $a<br>"; // Displays "9"
echo "\$b = $b<br>"; // Displays "9"
?>
ব্যাখ্যা:লক্ষ্য করুন এখানে $b এর মান পরিবর্তন হওয়ার সাথে সাথে $a এর মান ও পরিবর্তন হয়ে গেছে। আর এটা সম্ভব হয়েছে Returning by Reference এর কারণে।