OOP - Access Modifiers

🔹 Access Modifiers چیست؟

در PHP، Access Modifiers (سطوح دسترسی) مشخص می‌کنن که چه کسی (داخل یا خارج از کلاس) می‌تونه به Properties (ویژگی‌ها) و Methods (متدها) دسترسی داشته باشه.

🔹 انواع Access Modifiers در PHP

  1. public

    • قابل دسترسی از همه جا (داخل کلاس، خارج کلاس و کلاس‌های ارث‌بر).

  2. protected

    • فقط داخل خود کلاس و کلاس‌های ارث‌بر (subclass) قابل دسترسی هست.

  3. private

    • فقط داخل همان کلاس قابل دسترسی هست.

    • حتی کلاس‌های فرزند هم دسترسی ندارند.

🔹 مثال Public

<?php class Car { public $brand; public function setBrand($brand) { $this->brand = $brand; } public function getBrand() { return $this->brand; } } $car = new Car(); $car->setBrand("BMW"); echo $car->getBrand(); // خروجی: BMW ?>

📌 چون ویژگی‌ها و متدها public هستند، از بیرون کلاس هم می‌تونیم بهشون دسترسی داشته باشیم.

🔹 مثال Protected

<?php class Car { protected $brand; protected function setBrand($brand) { $this->brand = $brand; } } class BMW extends Car { public function showBrand() { $this->setBrand("BMW"); return $this->brand; } } $car = new BMW(); echo $car->showBrand(); // خروجی: BMW ?>

📌 ویژگی brand و متد setBrand فقط در خود کلاس و کلاس فرزند قابل دسترسی هستند، نه از بیرون.

🔹 مثال Private

<?php class Car { private $brand; private function setBrand($brand) { $this->brand = $brand; } public function showBrand() { $this->setBrand("BMW"); return $this->brand; } } $car = new Car(); echo $car->showBrand(); // خروجی: BMW ?>

📌 ویژگی brand و متد setBrand فقط داخل خود کلاس قابل دسترسی‌اند.
از بیرون کلاس یا حتی کلاس فرزند نمی‌شه بهشون دسترسی داشت.

🔹 جدول خلاصه

Modifierداخل کلاسکلاس‌های فرزندبیرون از کلاس
public
protected
private

✅ نتیجه‌گیری

  • public → همه جا قابل دسترسی

  • protected → فقط داخل کلاس و کلاس‌های فرزند

  • private → فقط داخل همان کلاس