PHP Object Oriented Programming পর্ব-৫: Visibility or Access Modifier in PHP

PHP তে Visibility বা Access modifier কি ?

Visibility or 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 করতে পেরেছি।

Zend Certified PHP Engineering (ZCPE) Course

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 দেখাবে।

Zend Certified PHP Engineering (ZCPE) Course

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 দেখাবে।

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

4 thoughts on “PHP Object Oriented Programming পর্ব-৫: Visibility or Access Modifier in PHP

Leave a Reply