PHP Object Oriented Programming
PHP Object Oriented Programming পর্ব-৫: Visibility or Access Modifier in PHP
PHP তে Visibility বা Access modifier কি ?
ইংরেজি শব্দ Visibility অর্থ দৃশ্যমানতা, অর্থাৎ class এর মধ্যে যেকোনো property,constant অথবা Method এ কে access পাবে তা visibility দিয়ে নির্ধারিত হয়। Visibility গুলো সাধারণত class এর মধ্যে constant,property, method এর আগে ঘোষণা করতে হয়।
PHP তে Visibility বা Access modifier কয়টি এবং কি কি ?
PHP তে Visibility মোট ৩ টি :
- Public
- Protected
- Private
এবার আসুন প্রত্যেকটি Visibility সম্পর্কে উদাহরণসহ বুঝার চেষ্টা করি:
public:
Class এর মধ্যে constant, property, method গুলোকে যদি একই class বা class নিজের মধ্যে , child class এবং class এর বাহির থেকে ব্যবহার রাখতে চাই , তাহলে সেইসব constant, property, method গুলোকে public ঘোষণা করতে হয়। চলুন একটা উদাহরণের মাধ্যমে আরো ভালো ভাবে বুঝা যাক :
<?php class GrandFather { public $name='Masud Alam'; // A public variable public function getName(){ return $this->name; } } class Daddy extends GrandFather // Inherited class { function displayGrandFaName() { return $this->name; // The public variable will be available to the inherited class } } $grandFa=new GrandFather; echo $grandFa->getName(),"\n"; // Inherited class Daddy wants to know Grandpas Name $daddy = new Daddy; echo $daddy->displayGrandFaName(),"\n"; // Prints 'Masud Alam' // Public variables can also be accessed outside of the class! $outsiderWantstoKnowGrandpasName = new GrandFather; echo $outsiderWantstoKnowGrandpasName->name; // Prints 'Masud Alam ?>
ব্যাখ্যা : পাঠক লক্ষ্য করুন, আমাদের GrandFather class এর $name নামক Property টি public হওয়ায়, $name property টি আমরা একই সাথে current class, child class এবং class এর বাহির থেকেও access করতে পেরেছি।
protected:
Class এর মধ্যে constant, property, method গুলোকে যদি শুধু একই class বা class নিজের মধ্যে এবং তার child class এর মধ্যে ব্যবহার সীমিত রাখতে চাই , তাহলে সেইসব constant, property, method গুলোকে protected ঘোষণা করতে হয়। চলুন একটা উদাহরণের মাধ্যমে আরো ভালো ভাবে বুঝা যাক :
<?php class GrandFather { protected $name='Masud Alam'; // A Protected variable public function getName(){ return $this->name; } } class Daddy extends GrandFather // Inherited class { function displayGrandFaName() { return $this->name; // The Protected Property will be available to the inherited class } } $grandFa=new GrandFather; echo $grandFa->getName(),"\n"; //Prints 'Masud Alam' // Inherited class Daddy wants to know Grandpas Name $daddy = new Daddy; echo $daddy->displayGrandFaName(),"\n"; // Prints 'Masud Alam' // Protected Property can not be accessed outside of the class! $outsiderWantstoKnowGrandpasName = new GrandFather; echo $outsiderWantstoKnowGrandpasName->name; // // Results in a Fatal Error ?>
ব্যাখ্যা : পাঠক লক্ষ্য করুন, আমাদের GrandFather class এর $name নামক Property টি protected হওয়ায়, $name property টি আমরা একই সাথে current class এবং child class থেকে access করতে পেরেছি কিন্তু current class অথবা child class এর বাহির থেকে access করতে পারবোনা, করলে আপনাকে fatal error দেখাবে।
private :
Class এর মধ্যে constant, property, method গুলোকে যদি শুধু একই class বা class নিজের মধ্যে ব্যবহার সীমিত রাখতে চাই , তাহলে সেইসব constant, property, method গুলোকে private ঘোষণা করতে হয়। চলুন একটা উদাহরণের মাধ্যমে আরো ভালো ভাবে বুঝা যাক :
<?php class GrandFather { private $name='Masud Alam'; // A Protected variable public function getName(){ return $this->name; } } class Daddy extends GrandFather // Inherited class { function displayGrandFaName() { return $this->name; // The Private Property will not available to the inherited class and will show notice } } $grandFa=new GrandFather; echo $grandFa->getName(),"\n"; //Prints 'Masud Alam' echo $gradFa->name, "\n"; //Results in a Notice // Inherited class Daddy wants to know Grandpas Name $daddy = new Daddy; echo $daddy->displayGrandFaName(),"\n"; // Results in a Notice // Protected Property can not be accessed outside of the class! $outsiderWantstoKnowGrandpasName = new GrandFather; echo $outsiderWantstoKnowGrandpasName->name; // // Results in a Fatal Error ?>
ব্যাখ্যা : পাঠক লক্ষ্য করুন, আমাদের GrandFather class এর $name নামক Property টি private হওয়ায়, $name property টি আমরা শুধু মাত্র current class এর ভিতরে ব্যবহার করতে পেরেছি, কিন্তু current class এর বাহির থেকে access বা ব্যবহার করতে পারবোনা, করলে আপনাকে error দেখাবে।
4 thoughts on “PHP Object Oriented Programming পর্ব-৫: Visibility or Access Modifier in PHP”
Leave a Reply
You must be logged in to post a comment.
good
nice
Thank you sir.
Thank you , sir.