Введение в PHP5 - Дескрипторы Private, Public и Protected
ОГЛАВЛЕНИЕ
Дескрипторы Private, Public и Protected
В PHP4 все методы и переменные внутри объекта были доступны извне, другими словами все методы и переменные всегда были открытыми. В PHP5 вводится три дескриптора для осуществления контроля над доступом к переменным и методам: Public, Protected и Private.
- Public (открытый): Метод/переменная доступны из любого места в коде.
- Private (закрытый): Закрытые методы или переменные доступны только внутри класса.
- Protected (защищённый): Защищённые методы или переменные доступны только внутри класса, где они были объявлены и из его производных классов.
Пример 4: Public, protected and private
<?php
class foo {
private $x;
public function public_foo() {
print("Это открытый метод");
}
protected function protected_foo() {
$this->private_foo(); //Всё правильно, мы можем вызывать закрытые методы, потому что мы находимся в том же классе
print("Это защищённый метод");
}
private function private_foo() {
$this->x = 3;
print("Это закрытый метод");
}
}
class foo2 extends foo {
public function display() {
$this->protected_foo();
$this->public_foo();
// $this->private_foo(); // Неправильно! В базовом классе метод закрыт
}
}
$x = new foo();
$x->public_foo();
//$x->protected_foo(); //Неправильно, защищённые методы могут вызываться только из того же класса или
//его производных классов
//$x->private_foo(); //Неправильно, закрытые методы могут быть вызваны только в классе, где они были объявлены
$x2 = new foo2();
$x2->display();
?>
Совет разработчикам: Переменные класса всегда следует делать закрытыми, прямой доступ к переменным - не очень хорошая практика в ООП, лучше всего для доступа/изменения переменных класса определять специальные методы.