# PHP OOP Access Modifiers Public, Private, Protected

PHP-এ OOP (Object-Oriented Programming) শেখার সময় **Access Modifiers** খুবই গুরুত্বপূর্ণ। এগুলো **Class-এর Properties এবং Methods-এর এক্সেস নিয়ন্ত্রণ করে।**  
PHP-এ মূলত তিন ধরনের Access Modifiers আছে:

1. **Public**
    
2. **Private**
    
3. **Protected**
    

চলুন একে একে দেখি।

## Public

**Public** Access Modifier মানে হলো **কোনো রেস্ট্রিকশন নেই।**  
Public প্রোপার্টি বা মেথডকে **Class-এর ভিতরে এবং বাইরে দু’জায়গায় ব্যবহার করা যায়।**

**উদাহরণ:**

```plaintext
<?php
class Car {
    public $brand;

    public function setBrand($name) {
        $this->brand = $name;
    }

    public function getBrand() {
        return $this->brand;
    }
}

$myCar = new Car();
$myCar->setBrand("Toyota");
echo $myCar->getBrand(); // Output: Toyota
```

এখানে `$brand` এবং মেথডগুলো public, তাই আমরা **Class-এর বাইরে থেকেও এগুলো ব্যবহার করতে পারছি।**

## Private

**Private** মানে হলো **সরাসরি বাইরে থেকে এক্সেস করা যাবে না।**  
Private প্রোপার্টি বা মেথড শুধুমাত্র **একই Class-এর ভিতরে ব্যবহার করা যায়।**

**উদাহরণ:**

```plaintext
<?php
class BankAccount {
    private $balance = 0;

    public function deposit($amount) {
        $this->balance += $amount;
    }

    public function getBalance() {
        return $this->balance;
    }
}

$account = new BankAccount();
$account->deposit(500);
echo $account->getBalance(); // Output: 500

// সরাসরি access করলে error হবে
// echo $account->balance; // Fatal error
```

**ব্যাখ্যা:**

* আমরা `$balance` কে private করেছি।
    
* তাই সরাসরি `$account->balance` করতে পারবো না।
    
* কিন্তু public মেথড `deposit()` এবং `getBalance()` ব্যবহার করে balance পরিবর্তন ও দেখানো যায়।
    

**Private এর সুবিধা:**

* Data Encapsulation।
    
* ডেটা নিরাপদ রাখা যায়।
    

## Protected

**Protected** মানে হলো **Class-এর ভিতরে এবং Inherited Class-এ ব্যবহার করা যাবে।**  
কিন্তু **Class-এর বাইরে থেকে সরাসরি access করা যাবে না।**

**উদাহরণ:**

```plaintext
<?php
class ParentClass {
    protected $name = "Parent";

    protected function showName() {
        return $this->name;
    }
}

class ChildClass extends ParentClass {
    public function display() {
        return $this->showName();
    }
}

$child = new ChildClass();
echo $child->display(); // Output: Parent

// সরাসরি access করলে error হবে
// echo $child->name; // Fatal error
```

**ব্যাখ্যা:**

* `$name` এবং `showName()` protected।
    
* আমরা ChildClass থেকে access করতে পারি।
    
* Class-এর বাইরে সরাসরি access করা যাবে না।
    

**Protected এর সুবিধা:**

* Inheritance-এর সময় ডেটা শেয়ার করতে সুবিধা।
    
* Class-এর বাইরে ডেটা লুকিয়ে রাখা যায়।
    

## Quick Summary Table

| Modifier | Access Inside Class | Access in Child Class | Access Outside Class |
| --- | --- | --- | --- |
| **Public** | ✅ | ✅ | ✅ |
| **Private** | ✅ | ❌ | ❌ |
| **Protected** | ✅ | ✅ | ❌ |

## দৈনন্দিন জীবনের উদাহরণ

* **Public:** আপনার Facebook প্রোফাইলের “Public Post” – কেউ যা দেখতে চায়, সবাই দেখতে পারে।
    
* **Private:** আপনার Facebook Account-এর Password – শুধু আপনার জন্য।
    
* **Protected:** আপনার ফ্যামিলি ফটো Album – শুধু পরিবারের মধ্যে শেয়ার করা যাবে।
    

**Access Modifiers** শেখা খুবই গুরুত্বপূর্ণ, কারণ এগুলো **Class-এর ডেটা নিরাপদ রাখে এবং কোডের structure ভালো রাখে।**

* **Public:** সব জায়গা থেকে access করা যায়।
    
* **Private:** শুধুমাত্র class-এর ভিতরে access করা যায়।
    
* **Protected:** class এবং subclass-এর ভিতরে access করা যায়।
    

এবার যখন আপনি OOP-এ কাজ করবেন, আপনার কোড হবে **নিরাপদ, পরিষ্কার এবং maintainable।**
