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 প্রাইভেট হওয়ায় ক্লাসের বাইরে থেকে এক্সেস করা যাবে না। শুধুমাত্র ক্লাসের ভিতরের মেথড থেকে অ্যাক্সেসযোগ্য।