Введение в PHP5 Страница 3. Дескрипторы Private, Public и Protected
|
Страница 3 из 9 Дескрипторы 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(); ?> Совет разработчикам: Переменные класса всегда следует делать закрытыми, прямой доступ к переменным - не очень хорошая практика в ООП, лучше всего для доступа/изменения переменных класса определять специальные методы. |