ফাংশনে ভ্যারিয়েবলের ব্যবহার
পিএইচপি(PHP)টিউটোরিয়াল
ইতোমধ্যে আমরা দেখেছি ফাংশনে কিভাবে আর্গুমেন্ট পাস করতে হয়। মুলত এই আর্গুমেন্ট গুলো সংরক্ষণ করা হয় লোকাল ভ্যারিয়েবল এ। এই ভ্যারিয়েবলগুলোকে ফাংশনের বাইরে থেকে এক্সেস করা যায় না। ফাংশনটি যখন কল করা হবে তখন এই ভ্যারিয়েবলগুলো মেমোরিতে সংরক্ষিত হবে। ফাংশন শেষে এই ভ্যারিয়েবলগুলোর আর কোন অস্বিত্ব থাকবে না ।
পিএইচপিতে মুলত দুই ধরনের ভ্যারিয়েবল এর ধারণা প্রচলিত, একটিgloba
ভ্যারিয়েবল আর অন্যটিlocal
ভ্যারিয়েবল। সাধারণত কোড ব্লকের বাইরের পিএইচপিতে ভ্যারিয়েবল গুলো গ্লোবাল হয়, এসব ক্ষেত্রে আপনার প্রোগ্রামে একই নামে দুটি ভ্যারিয়েবল লিখলে ২য় টির দ্বারা প্রথমটির ভ্যালু প্রতিস্থাপিত হবে। অন্যদিকে ফাংশন / মেথডে ব্যবহারিত ভ্যারিয়েবলগুলো সাধারনত লোকাল ভ্যারিয়েবল হয়। ঐ ভ্যারিয়েবলগুলোকে শুধুমাত্র ওই মেথড / ফাংশনের মধ্যে ব্যবহার করা যাবে।
Example:
<?php
$myvar = 100; // $myvar একটি গ্লোবাল ভ্যারিয়েবল
function myFunc()
{
$myvar = 50; // $myvar একটি লোকাল ভ্যারিয়েবল
}
?>
চাইলে গ্লোবাল ভ্যারিয়েবলগুলোকে সরাসির ফাংশন / মেথডের ভেতরে ব্যবহার করা যায়। এর জন্global
স্টেটমেন্ট ব্যবহার করতে হবে
Example:
<?php
$myvar = 100; // $myvar একটি গ্লোবাল ভ্যারিয়েবল
function myFunc()
{
global $myvar;
echo $myvar // $myvar একটি গ্লোবাল ভ্যারিয়েবল
}
?>
এখানে আমরা ফাংশনের ভিতর থেকেও গ্লোবাল $myvar
ভ্যারিয়েবলটি এ্যাক্সেস করেছি ।
পিএইচপিতে যখন কোন ফাংশনে / মেথডে কোন লোকাল ভ্যারিয়েবল ব্যবহার করা হয় তখন ফাংশনটি কল হওয়ার সময় ভ্যারিয়েবলটি তৈরি হয় এবং কল শেষ হলে ধ্বংস হয়ে যায়। অনেক সময় আমাদের ওই ফাংশনটি পরবর্তীতে কল করা হলে ভ্যারিয়েবলটির আগের মান জানার দরকারstatic
স্টেটমেন্ট ব্যবহার করে ওই ভ্যারিয়েবলটির ভ্যালু পরবর্তী কলের জন্য সংরক্ষন করা সম্ভব । নিচে একটি উদাহরন দেওয়া হল ।
মনে করা যাক আমাদের একটি ফাংশন আছে যার নাquery()
এখন আমাদের পুরো প্রোগ্রামে সকল ডাটাবেস কুয়েরির জন্য আমরা এই ফাংশনটি ব্যবহার করব। এই কারনে আমারা ফাংশনের মধ্যে একটি stati
ভ্যারিয়েবল ব্যবহার করব। যা কতবার এই ফাংশনটিকে কল করা হয়ে তার হিসাব রাখবে।
Example:
input:
<?php
function query()
{
static $count;
$count += 1;
$queryResult = "This is Query Result";
return array('query' => $queryResult, 'count' => $count);
}
// চারবার কল করা হয়েছে।
var_dump(query());
var_dump(query());
var_dump(query());
var_dump(query());
?>
output:
array (size=2)
'query' => string 'This is Query Result' (length=20)
'count' => int 1
array (size=2)
'query' => string 'This is Query Result' (length=20)
'count' => int 2
array (size=2)
'query' => string 'This is Query Result' (length=20)
'count' => int 3
array (size=2)
'query' => string 'This is Query Result' (length=20)
'count' => int 4