PHP - Модификаторы доступа
Свойства и методы могут иметь модификаторы доступа (или ключевые слова видимости), которые контролируют, откуда к ним можно получить доступ.
В PHP существует три модификатора доступа:
-
public— свойство или метод доступны отовсюду. Это значение по умолчанию -
protected— свойство или метод доступны внутри класса и в классах, производных от этого класса -
private— свойство или метод доступны ТОЛЬКО внутри того же класса, где они определены
Примечание: Если модификатор доступа не указан, он будет установлен как public.
Публичный модификатор доступа
Модификатор доступа public позволяет получать доступ к свойствам или методам класса отовсюду.
В следующем примере свойство $name и метод get_details() доступны извне класса.
Пример
<?php
class Fruit {
public $name;
public
function get_details() {
echo "Название: " . $this->name .
".";
}
}
$apple = new Fruit();
$apple->name = "Яблоко"; // Можно получить доступ напрямую
$apple->get_details();
?>
Попробуйте сами »
Приватный модификатор доступа
Модификатор доступа private позволяет получить доступ к свойствам или методам класса ТОЛЬКО внутри того же класса, где они определены.
В следующем примере свойство $name является приватным и к нему нельзя получить доступ напрямую.
Пример
<?php
class Fruit {
private $name;
public
function get_details() {
echo "Название: " . $this->name .
".";
}
}
$apple = new Fruit();
$apple->name = "Яблоко"; // Ошибка: Нельзя получить доступ к приватному свойству
$apple->get_details();
?>
Попробуйте сами »
Защищенный модификатор доступа
Модификатор доступа protected позволяет получить доступ к свойствам или методам класса внутри класса и в классах, производных от этого класса (дочерних классах).
В следующем примере свойство $name является защищенным, и к нему нельзя получить доступ напрямую.
Пример
<?php
class Fruit {
protected $name;
public
function get_details() {
echo "Название: " . $this->name .
".";
}
}
$apple = new Fruit();
$apple->name = "Яблоко"; // Ошибка: Нельзя получить доступ к защищенному свойству
$apple->get_details();
?>
Попробуйте сами »
В следующем примере свойство $name является защищенным и к нему нельзя получить доступ напрямую извне класса, но оно будет доступно в подклассе Apple (дочернем классе).
Пример
<?php
class Fruit {
protected $name;
public
function setType($name) {
$this->name = $name;
}
}
class
Apple extends Fruit {
public function getType() {
echo
"Название: " . $this->name . ".";
}
}
$apple = new Apple();
$apple->setType("Яблоко");
//echo $apple->name; // Ошибка: Нельзя получить доступ к защищенному свойству
echo $apple->getType(); // Вывод: Название: Яблоко.
?>
Попробуйте сами »