PHP – محدودیت دسترسیها (Access Modifiers)
محدودیت دسترسیها (Access Modifiers)
ویژگیها و متدها میتوانند مودیفایرهای دسترسی داشته باشند که کنترل میکنند از کجا میتوان به آنها دسترسی داشت.
سه نوع مودیفایر دسترسی وجود دارد:
- عمومی (public): ویژگی یا متد میتواند از هر جایی دسترسی یابد. این حالت پیشفرض است.
- محافظتشده (protected): ویژگی یا متد میتواند درون کلاس و توسط کلاسهایی که از آن کلاس مشتق شدهاند، دسترسی یابد.
- خصوصی (private): ویژگی یا متد فقط میتواند درون همان کلاس دسترسی یابد.
در مثال زیر ما سه مودیفایر دسترسی مختلف به سه ویژگی (name
, color
, weight
) اضافه کردهایم. در اینجا، اگر سعی کنید ویژگی name
را تنظیم کنید، کار خواهد کرد (زیرا ویژگی name
عمومی است و میتواند از هر جایی دسترسی یابد). اما اگر سعی کنید ویژگیهای color
یا weight
را تنظیم کنید، منجر به خطای شدید خواهد شد (زیرا ویژگیهای color
و weight
به ترتیب محافظتشده و خصوصی هستند):
مثال
<?php
class Fruit {
public $name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = 'Mango'; // درست
$mango->color = 'Yellow'; // خطا
$mango->weight = '300'; // خطا
?>
در مثال بعدی، ما مودیفایرهای دسترسی به دو تابع اضافه کردهایم. در اینجا، اگر سعی کنید تابع set_color()
یا set_weight()
را فراخوانی کنید، منجر به خطای شدید خواهد شد (زیرا این دو تابع به ترتیب محافظتشده و خصوصی هستند)، حتی اگر همه ویژگیها عمومی باشند:
مثال
<?php
class Fruit {
public $name;
public $color;
public $weight;
function set_name($n) { // یک تابع عمومی (پیشفرض)
$this->name = $n;
}
protected function set_color($n) { // یک تابع محافظتشده
$this->color = $n;
}
private function set_weight($n) { // یک تابع خصوصی
$this->weight = $n;
}
}
$mango = new Fruit();
$mango->set_name('Mango'); // درست
$mango->set_color('Yellow'); // خطا
$mango->set_weight('300'); // خطا
?>
توضیحات اضافی:
- عمومی (public): ویژگیها و متدهایی که با این مودیفایر تعریف میشوند، از هر جایی قابل دسترسی هستند.
- محافظتشده (protected): ویژگیها و متدهایی که با این مودیفایر تعریف میشوند، فقط از درون کلاس و کلاسهای فرزند قابل دسترسی هستند.
- خصوصی (private): ویژگیها و متدهایی که با این مودیفایر تعریف میشوند، فقط از درون همان کلاس قابل دسترسی هستند.
مودیفایرهای دسترسی به شما کمک میکنند تا کنترل بهتری بر روی دسترسی به دادهها و متدهای کلاس داشته باشید و کد خود را امنتر و خواناتر کنید.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام