PHP Variable & Constant
PHP Variable পর্ব-২: PHP Variable Scope কি?
এই পর্বে আপনি জানতে পারবেন :
- PHP Variable Scope কি?
- PHP Variable এ Local Scope এবং Global Scope কি ?
- PHP তে Global Keyword কি?
- PHP তে Static Keyword কি?
PHP Variable Scope কি?
PHP তে আপনি আপনার সমস্ত কোড জুড়ে যেকোনো জায়গায় Variable Declare বা ঘোষণা করতে পারেন। কোনো Variable যদি আপনি function এর ভিতরে ঘোষণা করেন, তাহলে ঐ Variable এর ব্যবহার Function এর মধ্যেই সীমাবদ্ধ রাখতে হবে। PHP তে এইটাকে বলা হয় Local Scope, আবার যদি কোনো Variable ফাঙ্কশনের বাহিরে ঘোষণা করেন। তাহলে ঐ Variable সমস্ত কোড জুড়ে ব্যবহার করতে পারবেন। তবে Funciton এর ভিতরে ব্যবহার করতে পারবেন না, যদি না সেই variable কে Global ঘোষণা না করেন।
PHP তে Variable Scope চার ধরনের :
- local
- global
- Super Global
- static
Global এবং Local Scope
Global Scope
কোনো Variable কে যখন Function এর বাইরে ঘোষনা করা হয় তখন ঐ variable শুধু মাত্র Function এর বাহিরেই ব্যবহার করা যায়। function এর ভিতরে ব্যবহার করা যায়না। তখন এটাকে বলা হয় Global Scope, নিচের উদাহরণে দেখা যাক:
<?php $x = 5; // global scope function myFunc() { echo "Variable x inside function is: $x <br>"; } myFunc(); echo "Variable x outside function is: $x"; ?>
ব্যাখ্যা : উপরের উদাহরণে function এর ভিতরের $x একটা Error Notice দেখাবে। কারন এখানে $x ভ্যারিয়েবল হচ্ছে Global Scope, যার জন্য $x কে function এর ভিতরে ব্যবহার করা যাবেনা। আবার function এর বাহিরে $x Variable কোনো Error দেখাবেনা। কারন Global Scope Variable আমরা function এর বাহিরে যেকোনো জায়গায় ব্যবহার করতে পারবো।
Local Scope
কোনো Variable কে যখন Function এর ভিতরে ঘোষনা করা হয় তখন ঐ variable শুধু মাত্র Function এর ভিতরেই ব্যবহার করা যায়। function এর বাহির থেকে ব্যবহার করা যায়না। তখন এটাকে বলা হয় লোকাল Scope, নিচের উদাহরণে দেখা যাক:
<?php function myFun2() { $x = 5; // local scope echo "Variable x inside function is: $x<br>"; } myFunc2(); // using x outside the function will generate an error echo "Variable x outside function is: $x<br>"; ?>
ব্যাখ্যা : উপরের উদাহরণে function এর বাহিরের $x একটা Error Notice দেখাবে। কারন এখানে Function এর ভিতরের $x Variable হচ্ছে Local Scope, যার জন্য $x কে function এর বাহিরে ব্যবহার করা যাবেনা। আর $x Variable টি Local Scope হওয়াতে function এর ভিতরে কোনো Error দেখাবেনা।
PHP তে Global Keyword কি?
PHP তে কোনো Global Variable কে function এর ভিতরে ব্যবহার করার জন্য global keyword ব্যবহার করা হয়। এটা করার জন্য function এর ভিতরে variable এর সামনে Global Keword লিখতে হবে। নিচের উদাহরণে দেখা যাক:
<?php $x = 5; $y = 10; function myFunc3() { global $x, $y; $y = $x + $y; } myFunc3(); echo $y; // outputs 15 ?>
ব্যাখ্যা : উপরের উদাহরণে function এর বাহিরের $x এবং $y Variable কে Function এর ভিতরে ব্যবহারের সুযোগের জন্য আমরা Global Keyword করি।
PHP তে Global Variable গুলো একটা array তে থাকার কারণে আমরা নিচের উদাহরণের মতো করেও Global Variable গুলোকে $GLOBALS super Global Variable দিয়ে ব্যবহার করতে পারি।
<?php $x = 5; $y = 10; function myFunc3() { $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; } myFunc3(); echo $y; // outputs 15 ?>
PHP ফাংশনে একটি super global variable কে কিভাবে রিসিভ করতে পারি?
একটি superglobal variable যেমন $_GET, $_POST, $_SERVER, $_SESSION, অথবা $_COOKIE দিয়ে একটি PHP ফাংশনের ভিতরে অ্যাক্সেস করতে, আপনি কেবল ফাংশনের মধ্যে তাদের গ্লোবাল নাম দ্বারা তাদের উল্লেখ করতে পারেন। PHP স্বয়ংক্রিয়ভাবে সুপারগ্লোবালগুলিকে ফাংশনের মধ্যে সহ যেকোনো scope এ available করে। এখানে আপনি কিভাবে একটি PHP ফাংশনে একটি সুপারগ্লোবাল ভেরিয়েবলের মান পেতে পারেন তার উদাহরণ দেওয়া হলো।
প্রথমে form.php নামে নিচের মতো করে একটি File তৈরি করুন:
<?php session_start(); $_SESSION['pageName']=$_SERVER['PHP_SELF']; setcookie("clientIp",$_SERVER['REMOTE_ADDR'],time()+3600); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Super Global Variable Practice</title> </head> <body> <form action="process.php" method="get"> Name:<input name="name" type="text"> <input type="submit" name="submit" value="Send"> </form> <form action="process.php" method="post"> Age:<input name="age" type="text"> <input type="submit" name="submit" value="Send"> </form> </body> </html>
এবার process.php ফাইলে নিম্নোক্ত উপায়ে Super Global Variable এর value গুলো গ্রহণ করুন :
<?php function myFunction() { $date=getdate($_SERVER['REQUEST_TIME']); // Access the superglobal variable $_GET if(isset($_GET['name'])){ echo "Welcome ".$_GET['name']."!<br>"; } // Access the superglobal variable $_POST if(isset($_POST['age'])){ echo "You're ".$_POST['age']." Years Old!<br>"; } session_start(); echo "Coming From Page: ".$_SESSION['pageName'],"<br>"; echo "Client Ip is: ".$_COOKIE['clientIp'],"<br>"; echo "<br> You access This page at $date[weekday], $date[month] $date[mday], $date[year]"; } // Call the function to demonstrate myFunction();
Result:
Welcome Masud Alam with GET Method! Coming From Page: /test/form.php Client Ip is: ::1 You access This page at Tuesday, September 19, 2023 You're 39 Years Old with POST Method! Coming From Page: /test/form.php Client Ip is: ::1 You access This page at Tuesday, September 19, 2023
PHP তে Static Keyword কি?
সাধারণত PHP তে কোনো Function execute হওয়ার পর বা Function এর কাজ শেষ হওয়ার সাথে সাথে তার Local Variable গুলোও মুছে যায়। কিন্তু কখনো কখনো আমরা চাই পরবর্তীতে ব্যবহারের জন্য আমাদের Local Variable গুলো থাকুক। আর এই কাজটি করার জন্য আমাদের কে static keyword ব্যবহার করতে হয়। চলুন static keyword ছাড়া একটা উদাহরণ দেখি:
<?php function myFunc4() { $x = 0; echo $x; $x++; } myFunc4(); //Output: 0 myFunc4(); //Output: 0 myFunc4(); //Output: 0 ?>
উপরের উদাহরণে লক্ষ্য করুন “myFunc4” function টি যতবারই call করতেছি ততবারই ফলাফল হিসাবে 1 আসতেছে। এর কারণ myFunc4 function টি প্রত্যেকবারই তার variable গুলো ডিলিট করে দেয় এবং প্রত্যেকবারই নতুন value assign করে। যার জন্য ফলাফল হিসাবে আমরা প্রত্যেকবার 1 পাচ্ছি। অথচ আমরা যদি চাই আগের মানের সাথে প্রত্যেকবার 1 করে যোগ হোক, তাহলে আপনি $x variable এর সামনে static keyword জুড়ে দিতে হবে। চলুন নিচের উদাহরণে দেখা যাক।
<?php function myFunc4() { static $x = 0; echo $x; $x++; } myFunc4(); //Output: 1 myFunc4(); //Output: 2 myFunc4(); //Output: 3 ?>
নিম্নে static variable এর আরো জটিল একটা উদাহরণ দেওয়া হলো :
ধরুন আপনি আপনার সার্ভারের log Message গুলোকে নিম্নোক্ত উপায়ে একটা array তে রাখতে চান, এবং সর্বশেষ ফাঙ্কশন কলিং এর সময় সব গুলো error message পেতে চান , সেক্ষেত্রে আপনাকে error message গুলোর array variable কে আপনাকে static ঘোষণা করতে হবে। অন্যথায় পূর্ববর্তী সব error message হারিয়ে যাবে।
প্রথমে দেখে নেওয়া যাক , static ঘোষণা ছাড়া কি ধরনের রেজাল্ট আসত।
//Error Logging function without static declaration <?php function logger($message) { $log = []; // Initialize a static array to store log messages // Add the message to the log array $log[] = $message; // Output the entire log echo "Log Messages:\n"; foreach ($log as $index => $entry) { echo "$index: $entry\n"; } echo "\n"; } logger("Error: File not found."); // Log the first message logger("Warning: Invalid input."); // Log another message logger("Info: Operation completed successfully."); // Log one more message
Result:
Log Messages: 0: Error: File not found. Log Messages: 0: Warning: Invalid input. Log Messages: 0: Info: Operation completed successfully.
ব্যাখ্যা: এখানে লক্ষ্য করুন logger() ফাঙ্কশনে $log variable টি static ঘোষণা না করায় , logger() ফাঙ্কশন প্রত্যেকবার কলিং এর সময় তার পূর্ববর্তী লগ মেসেজ হারিয়ে ফেলতেছে।
এবার দেখে নেওয়া যাক , static ঘোষণা করলে কি ধরনের রেজাল্ট আসত।
<?php function logger($message) { static $log = []; // Initialize a static array to store log messages // Add the message to the log array $log[] = $message; // Output the entire log echo "Log Messages:\n"; foreach ($log as $index => $entry) { echo "$index: $entry\n"; } echo "\n"; } logger("Error: File not found."); // Log the first message logger("Warning: Invalid input."); // Log another message logger("Info: Operation completed successfully."); // Log one more message
Result:
Log Messages: 0: Error: File not found. Log Messages: 0: Error: File not found. 1: Warning: Invalid input. Log Messages: 0: Error: File not found. 1: Warning: Invalid input. 2: Info: Operation completed successfully.
ব্যাখ্যা: এখানে লক্ষ্য করুন logger() ফাঙ্কশনে $log variable টি static ঘোষণা করায় , logger() ফাঙ্কশন প্রত্যেকবার কলিং এর সময় তার পূর্ববর্তী লগ মেসেজ সহ রিটার্ন করতেছি ।
2 thoughts on “PHP Variable পর্ব-২: PHP Variable Scope কি?”
Leave a Reply
You must be logged in to post a comment.
Great jobs!!!
ekhane output 0 asbe sob koytay