PHP Variable & Constant
PHP Variable পর্ব-৪: Reference Variable
Last Updated on July 28, 2022 by Masud Alam
এই পর্বে আপনি জানতে পারবেন :
- PHP Reference Variable কি ?
- PHP Reference Variable দিয়ে আমরা কি করতে পারি?
- Assigning by Reference কি?
- Passing by Reference কি?
- Returning References কি?
- PHP তে Reference দিয়ে কি array অথবা object এ কাজ করা যায়?
PHP Reference Variable কি ?
PHP Reference Variable হচ্ছে কোনো একটা নির্দিষ্ট variable এর value বা content এ ভিন্ন ভিন্ন Variable নামে ব্যবহার করতে পারা। অনেকটা Windows OS এর Shortcut Links অথবা Linux OS এর Symbolic Links এর মতো। PHP তে Reference ঘোষণা করতে হলে , Variable এর সামনে একটা & চিহ্ন (ampersand sign) দিতে হয়।
https://w3programmers.com/bangla/php-course/
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 ও পরিবর্তন হয়ে যাবে। নিচের উদাহরণ লক্ষ্য করুন :
https://w3programmers.com/bangla/php-course/
<?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 হয়ে গেছে।
https://w3programmers.com/bangla/php-course/
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 এর কারণে।
PHP তে Reference দিয়ে কি array অথবা object এ কাজ করা যায়?
হাঁ PHP তে Reference দিয়ে array অথবা object এর property গুলোর value খুব সহজে পরিবর্তন করে দেয়া যায়। সেক্ষেত্রে আপনাকে foreach loop এর আশ্রয় নিতে হবে। নিচের উদাহরণ দুইটি লক্ষ্য করুন :
$bands = array( "The Who", "The Beatles", "The Rolling Stones" ); foreach ( $bands as $band ) { $band = strtoupper( $band ); } echo "<pre>"; print_r( $bands ); echo "</pre>";
উপরের উদাহরণের ফলাফল নিচের মত করে দেখাবে :
Array ( [0] => The Who [1] => The Beatles [2] => The Rolling Stones )
এখানে আমরা দেখতে পাচ্ছি strtoupper function টি আমাদের কোনো কাজে আসতেছেনা, এখন আমরা যদি $bands array কে $band এর সাথে reference করে দেই, তাহলে $bands array এর সব গুলো value ই uppercase এ রূপান্তর হয়ে যাবে। নিচের উদাহরণ লক্ষ্য করুন :
$bands = array( "The Who", "The Beatles", "The Rolling Stones" ); foreach ( $bands as &$band ) { $band = strtoupper( $band ); } echo "<pre>"; print_r( $bands ); echo "</pre>";
নিচে পরিবর্তন লক্ষ্য করুন, সবগুলো Array Property এর value Uppercase এ পরিবর্তন হয়েগেছে।
https://w3programmers.com/bangla/php-course/
Array ( [0] => THE WHO [1] => THE BEATLES [2] => THE ROLLING STONES )