PHP – Access Modifiers

PHP – Access Modifiers (অ্যাক্সেস মডিফায়ারস)

PHP-তে Access Modifiers নির্ধারণ করে কোন প্রপার্টি বা মেথড ক্লাসের মধ্যে কোথা থেকে এক্সেসযোগ্য হবে। মূলত তিনটি ধরণের অ্যাক্সেস মডিফায়ার আছে:

  • public – যেকোনো জায়গা থেকে এক্সেসযোগ্য
  • protected – শুধুমাত্র ক্লাস ও সাব-ক্লাস থেকে এক্সেসযোগ্য
  • private – শুধুমাত্র সেই ক্লাসের মধ্যেই এক্সেসযোগ্য

উদাহরণ (Example):


<?php
class MyClass {
    public $publicVar = "Public";
    protected $protectedVar = "Protected";
    private $privateVar = "Private";

    function showVars() {
        echo $this->publicVar . "<br>";
        echo $this->protectedVar . "<br>";
        echo $this->privateVar . "<br>";
    }
}

$obj = new MyClass();
$obj->showVars();
?>
    

Access Outside the Class:

ক্লাসের বাইরে থেকে যেভাবে অ্যাক্সেস করা যায় বা যায় না তা নিচের টেবিলে দেখানো হলো:

Modifier Inside Class Outside Class Subclass
public ✔️ ✔️ ✔️
protected ✔️ ✔️
private ✔️

উপসংহার:

Access Modifiers ব্যবহার করে আপনি আপনার ক্লাসের প্রপার্টি ও মেথডগুলোকে সুরক্ষিত রাখতে পারেন এবং কিভাবে এগুলো ব্যবহার করা যাবে তা নির্ধারণ করতে পারেন।


উদাহরণ ২: Protected প্রপার্টি Inheritance এর মাধ্যমে অ্যাক্সেস


<?php
class Person {
    protected $name = "Rahim";
}

class Student extends Person {
    public function getName() {
        return $this->name;
    }
}

$std = new Student();
echo $std->getName(); // Output: Rahim
?>

✅ এখানে protected প্রপার্টি সাবক্লাসের ভিতরে অ্যাক্সেসযোগ্য, কিন্তু ক্লাসের বাইরে থেকে সরাসরি এক্সেস করা যাবে না।

উদাহরণ ৩: Public প্রপার্টি ও মেথড


<?php
class Car {
    public $brand = "Toyota";

    public function showBrand() {
        echo "Car brand is " . $this->brand;
    }
}

$myCar = new Car();
$myCar->showBrand(); // Output: Car brand is Toyota
?>

এখানে public প্রপার্টি এবং মেথড যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য।

উদাহরণ ৪: Private প্রপার্টি Access এর চেষ্টা


<?php
class BankAccount {
    private $balance = 5000;

    public function showBalance() {
        echo "Balance is " . $this->balance;
    }
}

$account = new BankAccount();
echo $account->balance; // ❌ Error: Cannot access private property
?>

⚠️ ব্যাখ্যা: এখানে $balance প্রাইভেট হওয়ায় ক্লাসের বাইরে থেকে এক্সেস করা যাবে না। শুধুমাত্র ক্লাসের ভিতরের মেথড থেকে অ্যাক্সেসযোগ্য।

Leave a Reply