
শিখুন পিএইচপি প্রোগ্রামিং বেসিক : কিভাবে পিএইচপিতে ভেরিয়েবল নিয়ে কাজ করতে হয় – র্পব ৪


শিখুন পিএইচপি প্রোগ্রামিং বেসিক : কিভাবে পিএইচপিতে ভেরিয়েবল নিয়ে কাজ করতে হয় – র্পব ৪
ভেরিয়েবল হচ্ছে একটা পাত্রের মত(Container)যেখানে আমরা অনেক তথ্য রাখতে পারি।যেমন একটা টেক্সক্ট String "Hello Bangladesh" অথবা একটা integer value 100. কোন একটা ভেরিয়েবল এ একবার তথ্য রেখে সেটা পুরো কোডজুরে বারবার ব্যাবহার করতে পারেন,মুল তথ্য(value)টি বারবার রাখার পরিবর্তে।পিএইচপি তে ভেরিয়েবল "$" এই চিহ্নটি দিয়ে অবশ্যই শুরু করতে হবে নাহলে কাজ করবেনা।একটা ভেরিয়েবলের মান স্ক্রিপ্টে যেকোন সময় পরিবর্তন হতে পারে।
*ভেরিয়েবল নাম case sensitive.যেমন $a_number and $A_number দুটি আলাদা ভেরিয়েবল, পিএইচপি এর দৃষ্টিতে।
*নিম্নোক্ত ভাবে পিএইচপি তে ভেরিয়েবল লেখা হয়
$variable_name = Value;
উদাহরন
";
$total = $a_number+$anotherNumber;
echo $total;
?>
আউটপুট:
variable_php
ব্যাখ্যা: উপরের কোডে দেখুন স্ট্রিং কে কোটেশন এর ভিতর রেখেছি এবং $hello ভেরিয়েবলে তা রেখেছি,পরে echo দিয়ে তা ব্রাউজারে আউটপুট এনেছি।আবার $a_number এবং $anotherNumber ভেরিয়েবলে সংখ্যা রেখেছি এবং পরে তা দিয়ে একটা অংক করেছি।
*পিএইচপি একটা "Loosely Typed" ল্যাংগুয়েজ তাই ভেরিয়েবল declare করার সময় ভেরিয়েবল এর টাইপ(ধরন) উল্লেখ না করলেও পিএইচপি নিজে থেকে ভেরিয়েবল কে সঠিক ডেটা টাইপে রুপান্তর করে নেবে।
ভেরিয়েবল নামকরন পদ্ধতি:
১.অবশ্যই কোন letter or "_"(under score) দিয়ে শুরু করতে হবে।
২. নামের মধ্যে alpha-numeric characters ও underscores. a-z, A-Z, 0-9, or _ . থাকতে পারে।
৩. ভেরিয়েবল নামে স্পেস থাকা যাবেনা।যদি নাম একের অধিক হয় তাহলে "___"underscore ($my_string) অথবা বড় হাতের অক্ষরে($myString)লিখতে হবে।
দুটি জিনিস সবসময় লাগে
একটা ডট (.) দুটি স্ট্রিংকে একসাথে করল,এটা সাধারন নিয়ম।একে বলে concatenate (কনক্যাটেনেট).একই কাজ নিচের মত করে করা যায়।বিভিন্ন সময় কোডে এমন দেখতে পাবেন।
এটার আউটপুট উপরের টির মতই আসবে।
নিচের কোডব্লক দুটির আউটপুট একই হবে
আউটপুট ১ আসবে,উল্লেখ্য যে $test ভেরিয়েবলের মান যদি ঠিক করে না দেন তাহলে পিএইচপি এটার মান বাই ডিফল্ট ০ ধরে নেবে।
এখানেও আউটপুট ১ আসবে।
ভেরিয়েবল স্কোপ
একটা ফাংশনে একটা ভেরিয়েবল থাকতে পারে,নিচের উদাহরনটি দেখুন
";
calculation();
?>
আউটপুট
This $number variable from outside of calculation() function and its value is 8
18
[*দেখুন ভেরিয়েবল চিহ্ন $ এর আগে \ (ব্যাকস্লাশ) চিহ্ন দেয়াতে সেটা ভেরিয়েবল হিসেবে গন্য হয়নি বরং স্ট্রিং এর মত আউটপুট হয়েছে।এটাকে বলে এসকেপ ক্যারেক্টার (escape character)]
এখানে ফাংশনের ভিতর $number নামে একটা ভেরিয়েবল আছে এবং ফাংশনের বাইরেও এই একই নামে আরেকটা ভেরিয়েবল আছে ($number = 8;)।ভেরিয়েবল দুটির নাম একই কিন্তু সম্পূর্ন আলাদা ভেরিয়েবল।কারন একটা ফাংশনের ভিতর আর একটা বাইরে।ভিতরের এই ভেরিয়েবলটিকে বলে লোকাল ভেরিয়েবল।আর বাইরের ভেরিয়েবলটির নাম গ্লোবাল ভেরিয়েবল।
লোকাল ভেরিয়েবলটি শুধু এই ফাংশনের ভিতরেই ব্যবহার করা যাবে,ফাংশনের বাইরে থেকে একসেস পাওয়া যাবেনা।এই যে একটা ভেরিয়েবল শুধু একটা নির্দিষ্ট জায়গায় ব্যবহার করা যাচ্ছে,এটাই হল এই ভেরিয়েবলটির স্কোপ।
গ্লোবাল ভেরিয়েবল
গ্লোবাল ভেরিয়েবল একটা প্রোগ্রামের ভিতর যেকোন জায়গায় ব্যবহার করা যায়।একটা ফাংশনে গ্লোবাল ভেরিয়েবল ব্যবহার করার জন্য দুটি পদ্ধতি আছে-
পদ্ধতি ১ ($GLOBALS['number'])
ধরুন উপরের প্রোগ্রামে ব্যবহৃত গ্লোবাল ভেরিয়েবলটি যদি ফাংশনে ব্যবহার করতে চান তাহলে নিচের মত কোড লিখতে হবে
ফাংশনের বাইরের $number ভেরিয়েবলটিকে ফাংশনের ভিতর $GLOBALS অ্যারে দিয়ে নিয়ে এসেছি।ফাংশনটি যদি আরও বড় হত এবং আরও অন্য কোথাও গ্লোবাল ভেরিয়েবলটি ব্যবহার করতে হত তাহলে প্রতিবারই $GLOBALS["number"] এটা লিখে ব্যবহার করতাম।
পদ্ধতি ২ (global $number)
এই পদ্ধতিতে একটা ম্যাজিক আছে একটু ভালভাবে পড়ুন।ধরুন আগের মতই ফাংশনের বাইরের $number (যেটা গ্লোবাল) ভেরিয়েবলটিকে ব্যবহার করার জন্য আমাদের শুধু $number এর আগে global শব্দটি লিখে দিতে হবে।অর্থাৎ নিচের মত
global $number
এবং এরপর থেকে যদি শতবারও এই ভেরিয়েবলটি ব্যবহার করতে হয় তাহলে কিভাবে লিখবেন? global $number এভাবে? না।বরং এভাবে $number. এবার ম্যাজিকটার কথা বলি নিচের কোড দেখুন
উপরের কোডে (যেখানে $GLOBALS অ্যারে ব্যবহার করলাম) ৬ নম্বর লাইনে $number হচ্ছে লোকাল ভেরিয়েবল আর এই কোডে এই লাইনটি দ্বারা গ্লোবাল ভেরিয়েবলে নতুন নাম্বার ১০ assign করা হয়েছে।(কারনতো আগেই বলেছি যে global $number কে ব্যবহার করতে এখন $number এভাবে লিখতে হবে)
এরপর ১০ নম্বর লাইনে এই ভেরিয়েবলটির সাথে তাকেই আবার যোগ করেছি,কোড রান করান আউটপুট আসবে ২০।কাজেই global শব্দ ব্যবহার করে ভেরিয়েবল ব্যবহারের সময় সতর্ক থাকতে হবে।সবচেয়ে ভাল $GLOBALS["number"] এভাবে ব্যবহার করুন।তাহলে আর কোন শংকা থাকেনা।
আরেকটা গুরত্বপূর্ন জিনিস,নিচের কোড দেখুন এখানে echo করলে আউটপুট কত আসবে?১০, ২০ না ৩০?
উত্তর হচ্ছে ৩০,কারন প্রথমে $number এর মান ছিল ১০,এরপরের বার $number এর মান assign করা হয়েছে ২০ আর সব শেষে ৩০ এবং শেষেরটা echo হয়েছে।
এই কোডের উপরের কোডটাতে যখন global $number লিখেছিলাম তখন এর মান ছিল ৮ (কারন ফাংশনের বাইরে গ্লোবাল $number এর মান ৮ আছে) পরের লাইনে $number = 10 দেয়াতে এর মান assign হয়েছে ১০ এবং এটিই এখন এর আসল মান।
স্টাটিক ভেরিয়েবল
কোন ভেরিয়েবলের সামনে static শব্দটি লিখলে সেটা স্টাটিক ভেরিয়েবল হয়ে যায়।একটা ফাংশনে স্টাটিক ভেরিয়েবল ব্যবহৃত হয়।ফাংশনের হেডারে প্যারমিটার থাকতে পারে এগুলিও ভেরিয়েবল।যখন ফাংশন এক্সিকিউট শেষ হয়ে যায় তখন ভেরিয়েবলগুলিও ধ্বংশ হয়ে যায়।স্টাটিক ভেরিয়েবল ব্যবহার করলে তা হয়না বরং ফাংশন শেষ হয়ে গেলেও এই ভেরিয়েবল মান ধরে রাখে এবং ঐ ফাংশনকে আবার call করলে তখন সে ধরে রাখা মানটি পাঠিয়ে দেয় যেমন
";
}
test_stat();
test_stat();
test_stat();
?>
ব্যাখ্যা:ফাংশনে প্রথমে $ekta_variable ভেরিয়েবলের মান ছিল ০ আর $ekta_variable++ দ্বারা এই মান ১ বৃদ্ধি পেল তাই প্রথম ফাংশনটা call করাতে আউটপুট দিল ১,এখন $ekta_variable এর মান ০ থেকে হয়ে গেল ১।এরপর দ্বিতীয়বার ফাংশটাকে call করাতে আউটপুট দিল ২ এভাবে বাকিগুলি।
যদি static শব্দটি উঠিয়ে দেন তাহলে আউটপুট আসবে
1
1
1
আর স্টাটিক ভেরিয়েবল ব্যবহারের কারনে এখন আউটপুট আসবে
1
2
3
সুপারগ্লোবাল ভেরিয়েবল
পিএইচপি আগে থেকেই কিছু ভেরিয়েবল তৈরী করে রেখেছে ইচ্ছে করলে এই ভেরিয়েবলগুলি কোডের যেকোন জায়গায় ব্যবহার করতে পারেন।নাম সুপারগ্লোবাল ভেরিয়েবল।এসব ভেরিয়েবল ব্যবহার করে অনেক গুরত্বপূর্ন তথ্য পেতে পারেন যেমন ইউজারের অপরেটিং সিস্টেম কি,কোন ব্রাউজার ব্যবহার করছে,বর্তমান সেশন,আইপি এড্রেস ইত্যাদি।যেমন
আউটপুট
Your browser is: Mozilla/0 (Windows NT 1; rv:0.2) Gecko/20100101 Firefox/0.2
এখানে $_SERVER['HTTP_USER_AGENT'] হচ্ছে সুপারগ্লোবাল ভেরিয়েবল।এরকম আরো আছে যেমন
$_SERVER['REMOTE_ADDR'] এটা দিয়ে ক্লাইন্টের আইপি এড্রেস জানতে পারবেন।
$_POST
$_GET
$_FILES আপলোডকৃত ফাইলের তথ্য আনা যায়
$_ENV
$_SEESION
$_COOKIE
এগুলির প্রতিটির উপর পরে আলাদা আলাদা টিউটোরিয়াল আছে তাই এখানে বিস্তারিত দেয়া হলনা।
কনস্টান্ট
ভেরিয়েবলের মান কোডে বিভিন্ন সময় বিভিন্ন রকম হয় বা পরিবর্তন হয়।কিন্তু কনস্টান্টের মান নির্ধারিত পরিবর্তন হবেনা পুরো স্ক্রিপ্টে। পিএইচপিতে define() ফাংশন দ্বারা কনস্টান্ট এর মান ঠিক করে দেয়া যায়।যেমন
আউটপুট
Webcoachbd is a informative tutorial site
একবার মান ঠিক করে দিলে আর কখনও এই মান পরিবর্তন হবেনা।যেমন পাই (Π) এর মান ৩.১৪১৬ ,এদের মান নির্ধারন করার ক্ষেত্রে কনস্টান্ট ব্যবহার করা উপকারী।

Like This Post? Please share!

0 comments:
Post a Comment