PHP OOП - Модифікатори доступу
PHP - Модифікатори доступу
Властивості та методи можуть мати модифікатори доступу, які визначають, де до них можна отримати доступ.
Є три модифікатори доступу:
-
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'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
У наступному прикладі ми додали модифікатори доступу до двох функцій. Тут, якщо ви спробуєте викликати функцію 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'); // OK
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>