React Bangla Logo
Reactবাংলা

PHP OOP Access Modifiers (অ্যাক্সেস মডিফায়ার) - বাংলা টিউটোরিয়াল

PHP OOP Access Modifiers (অ্যাক্সেস মডিফায়ার) কী, কিভাবে কাজ করে, উদাহরণসহ সহজ বাংলায় ব্যাখ্যা। public, protected, private, PHP Access Example।

PHP OOP - অ্যাক্সেস মডিফায়ার


PHP - অ্যাক্সেস মডিফায়ার কী?

ক্লাসের প্রপার্টি ও মেথড কোথা থেকে অ্যাক্সেস করা যাবে, তা নির্ধারণ করতে অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়।

PHP-তে তিন ধরনের অ্যাক্সেস মডিফায়ার আছে:

  • public: যেকোনো জায়গা থেকে অ্যাক্সেস করা যায় (এটাই ডিফল্ট)
  • protected: শুধু ক্লাসের ভেতর এবং ওই ক্লাস থেকে ইনহেরিট করা সাবক্লাসে অ্যাক্সেস করা যায়
  • private: শুধু ক্লাসের ভেতরেই অ্যাক্সেস করা যায়

প্রপার্টিতে অ্যাক্সেস মডিফায়ার

নিচের উদাহরণে তিনটি প্রপার্টিতে তিন ধরনের অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়েছে। এখানে name প্রপার্টি public, তাই বাইরে থেকে সেট করা যাবে। কিন্তু color (protected) ও weight (private) প্রপার্টি বাইরে থেকে সেট করতে গেলে ফেটাল এরর হবে।

<?php
class Fruit {
  public $name;
  protected $color;
  private $weight;
}

$mango = new Fruit();
$mango->name = 'Mango'; // ঠিক আছে
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>

সহজ বাংলায় public, protected, private তিনটি access modifier-এর পার্থক্য টেবিল আকারে দেখাচ্ছি।

Modifierকোথা থেকে access করা যায়ব্যবহারউদাহরণ
publicclass-এর ভিতর, subclass, আর class-এর বাইরেসাধারণ property বা method যা সবাই access করতে পারবে$name
protectedclass-এর ভিতর, subclass থেকেশুধু এই class বা child class-এ access করা যাবে$address
privateশুধু class-এর ভিতরশুধুমাত্র এই class-এর ভিতরে access করা যাবে, বাইরে বা subclass থেকে access হবে না$assets

এই কোডের context এ:

$newMillionear->name; // public → direct access ঠিক আছে
$newMillionear->get_address(); // protected → method দিয়ে access করতে হবে
$newMillionear->get_assets();  // private → method দিয়ে access করতে হবে

Beginner mistake:

  • Protected বা private property সরাসরি object থেকে access করার চেষ্টা করলে Error আসে।
  • তাই সবসময় getter method ব্যবহার করা ভালো।

মেথডে অ্যাক্সেস মডিফায়ার

নিচের উদাহরণে দুইটি ফাংশনে (set_color, set_weight) অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়েছে। এখানে শুধু set_name() ফাংশনটি বাইরে থেকে কল করা যাবে, কারণ এটি public। বাকি দুটি ফাংশন (protected ও private) বাইরে থেকে কল করলে এরর হবে, যদিও সব প্রপার্টি public।

<?php
class Fruit {
  public $name;
  public $color;
  public $weight;

  function set_name($n) { // public (ডিফল্ট)
    $this->name = $n;
  }
  protected function set_color($n) { // protected
    $this->color = $n;
  }
  private function set_weight($n) { // private
    $this->weight = $n;
  }
}

$mango = new Fruit();
$mango->set_name('Mango'); // ঠিক আছে
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>

On this page