প্রোপার্টিজ এবং মেথড (Properties and Method)

প্রোপার্টিজ (Properties) : প্রোপার্টি হচ্ছে সাধারন পিএইচপি ভেরিয়েবলের মত,ক্লাসের ভিতরে থাকলে এদেরকে প্রোপার্টি বা মেম্বার ভেরিয়েবল বলে।ক্লাসের ভিতর প্রয়োজন হলে এই মান পরিবর্তন করতে পারেন,সাধারন ভেরিয়েবলের মত।

**প্রোপার্টিজকে কোথাও কোথাও attributes বা মেম্বার ভেরিয়েবল বলতে শুনতে পারেন।একই জিনিস।

ক্লাস ডিক্লেয়ার করার পর দ্বিতীয় বন্ধনীর ভিতর স্ক্রিপ্টের শুরুতেই প্রোপার্টিজ লিখতে হয়।যেমন

<?php
class WebcoachbdProduct{
public $title = "default value";
public $length;
}
?>

প্রোপার্টিজ এর শুরুতে public শব্দটি দিয়েছি,এটা হচ্ছে একসেস মডিফায়ার।এধরনের আরও একসেস মডিফায়ার আছে protected এবং private.এগুলি দিয়ে ডেটা এনক্যাপসুলেট হয়।পরের টিউটোরিয়ালে বিস্তারিত আছে।

** পিএইচপি ৪ ভার্সনের সাথে কমপিটাবল রাখার জন্য পিএইচপি ৫ এর কয়েকটা ভার্সনে প্রোপর্টিজ এর আগে var শব্দটি ব্যবহার করা হত,এখন আর এই ফিচার নেই।

মেথড (Method): ক্লাসের ভিতর ফাংশনকে মেথড বলা হয়।প্রথমে এ function শব্দটি এবং এরপর মেথডের নাম,এভাবে মেথড লেখা হয়।প্রোপার্টিজ ডেটা সংরক্ষন করার জন্য আর মেথড কোন একটা কাজ পরিচালনা করার জন্য।ধরুন আপনি একটা অবজেক্ট তৈরী করলেন যেটা ইউজারের নিবন্ধন সম্পর্কিত, তাহলে এখানে ইউজারের অথেনটিকেশন (যাচাইকরন) এর জন্য একটা মেথড লিখতে পারেন।

**মেথডকে কোথাও কোথাও মেম্বার ফাংশন বা behaviour বলতে শুনতে পারেন।একই জিনিস।

প্রোপার্টিজ এর মত মেথডকেও public, protected, private শব্দগুলি দ্বারা এনক্যাপসুলেট করা হয়। যেমন

<?php
class WebcoachbdProduct{
public $title = "default value";
public $length;
public function getTutorial($name){
echo "Webcoachbd provide massive tutorial on". $name;
}
?>
<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">

এখন যদি এই ক্লাসটিকে instantiate করি তাহলে এর প্রোপার্টিজ এবং মেথড একসেস করা যাবে।যেমন

<?php
class WebcoachbdProduct{
 public $title = "default value";
 public $length;
 public function getTutorial($name){
 echo "Webcoachbd provide massive tutorial on". $name;
 }

}
$productObject = new WebcoachbdProduct();
echo $productObject->title.'<br/>';
$productObject->getTutorial(' OOP');
?>
<?php
class WebcoachbdProduct{
 public $title = "default value";
 public $length;
 public function getTutorial($name){
 echo "Webcoachbd provide massive tutorial on". $name;
 }

}
$productObject = new WebcoachbdProduct();
echo $productObject->title.'<br/>';
$productObject->getTutorial(' OOP');
?>

১০ নম্বর লাইনে new শব্দটি ব্যবহার করে WebcoachbdProduct ক্লাসটি instantiate করা হয়েছে।

(instantiate হচ্ছে এমন একটা পদ্ধতি যেটা ব্যবহার করলে একটা ক্লাস অবজেক্ট হয় এবং তখন সেই অবজেক্ট থেকে তার প্রোপার্টিজ এবং মেথডে একসেস নেয়া যায়।)

এখন দেখুন $productObject হ্যান্ডলটি এবং এরপর অ্যারো (->) চিহ্ন ব্যবহার করে ক্লাসটির মেথড এবং প্রোপার্টিজ এ একসেস নিয়েছি।এটা রান করান আউটপুট আসবে-

default value
Webcoachbd provide massive tutorial on OOP

**$productObject হ্যান্ডল বা রেফরেন্সটি কোথাও অবজেক্ট বলতে শুনতে পারেন।

**একটা ক্লাসের একাধিক অবজেক্ট তৈরী করতে পারেন।যেমন


<span style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px;">$productObject = new WebcoachbdProduct();</span>

<span style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px;">$productObject1 = new WebcoachbdProduct();</span>
$productObject2 = new WebcoachbdProduct();

যদিও অবজেক্টগুলি একই ক্লাসের তবুও তারা সম্পূর্ন ভিন্ন।

**যদি ক্লাসের ভিতর (এই ক্ষেত্রে ১০ নম্বর লাইনের আগে) কখনও প্রোপার্টিজকে পরিবর্তন করার প্রয়োজন হয় তাহলে $this এই সিডো ভেরিয়েবলটি ব্যবহার করে করতে পারেন যেমন আমি $title এর একটা ডিফল্ট মান দিয়ে রেখেছি,আপনি চাইলে $this->title = "modified value"; এভাবে  মান পরিবর্তন করে দিতে পারেন।

আর অবজেক্টে যদি পরিবর্তন করতে চান তাহলে $productObject->title = "modified in object"; এভাবে করতে পারবেন।যেমন

<pre><?php
class WebcoachbdProduct{
 public $title = " OOPHP";
 public $length;
 public function getTutorial($name = NULL){
 echo "Webcoachbd provide massive tutorial on". $this->title = $name."<br/>";
 }

}
$productObject = new WebcoachbdProduct();
$productObject->title = " Joomla";
echo $productObject->title."<br/>";
$productObject->getTutorial(' OOP');
?>

আউটপুট:
Joomla
Webcoachbd provide massive tutorial on OOP

ব্যাখ্যা:৬ নম্বর লাইনে $this->title এটা দ্বারা ৩ নম্বর লাইনের title প্রোপার্টিজ টির ডিফল্ট মান OOPHP পরিবর্তন হয়েছে।(পরিবর্তন হয়ে যেটা $name প্যারামিটারে দেয়া হবে সেটা আসবে)।

আবার ১১ নম্বর লাইনে ঐ একই প্রোপার্টিজটির মান পরিবর্তন করে দিয়েছি,কিন্তু দেখুন এখানে অবজেক্টটি instantiate করার পর সেই রেফারেন্স বা হ্যান্ডলটি ধরে তারপর প্রোপার্টিজটি ধরা হয়েছে।আর instantiate করার আগে $this দিয়ে ধরেছি।

টিউনস ভালো লাগলে আমার ব্লগ  থেকে ঘুরে আসুন।

Level 0

আমি tanvir007123। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 1 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 13 টি টিউন ও 3 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস