Сейду Думбия снова ждут в ЦСКА

Инкапсуляция и спецификаторы доступа в PHP

Опубликовано: 03.09.2018

видео Инкапсуляция и спецификаторы доступа в PHP

php уроки ооп [базовое php ооп] | Урок 2. Модификаторы доступа, инкапсуляция, понятие интерфейс

Класс может использоваться без методов и членов, однако пользы в этом случае от него не больше, чем от переменной, которая не может хранить значения.



Как правило, классы содержат члены и методы. Часть из них будет использоваться внешним разработчиком, часть предназначена только для внутреннего использования в рамках самого класса. PHP пердоставляет специальные ключевые слова, позволяющие указать, какие члены и методы доступны извне, а какие нет.


PHP Start | Теория: Урок 14. ООП #2. Наследование, инкапсуляция

Это позволяет реализовать принцип инкапсуляции.

У нас имеется класс "Ф.И.О" (fio), который содержит четыре члена:

$lastname - фамилия; $name - имя; $middlename - отчество; $age - возраст;

Напомним, что переменные объявленные в классе, называются членами, а функции методами.


Что такое геттеры и сеттеры для класса. Методы get и set. Инкапсуляция это. Пример. C++ Урок #76

class fio { public $lastname; public $name; public $middlename; private $age; } // Устанавливаем значения членам класса. $_new = new fio(); $_new->lastname = 'Иванов'; $_new->name = 'Иван'; $_new->middlename = 'Иванович'; $_new->age = 50; // Выводим члены класса. echo $_new->lastname .' - '. $_new->name .' - '. $_new->middlename; echo $_new->age; # Обращение завершится ошибкой.

Как видно члены класса "fio" объявляются ключевым словом "public", которое является спецификатором доступа. Все члены и методы класса делятся на закрытые и открытые. Для открытых членов класса существует спецификатором доступа "public", сам член класса или метод будет доступен как внутри класса так и извне, а для того чтобы член или метод класса небыл доступен извне программы объявляется спецификатор "private". Существует ещё один спецификатор доступа "protected" (защищённый). Иногда удобно, чтобы член или метод базового класса, оставался закрытым для внешнего кода и был открыт для производного класса в этом случае прибегают именно к нему. Ниже продемонстрирован пример его использования.

class fio { protected $_var; public function __construct($_var) { $this->var = $_var; } } class age extends fio { public function __construct($_var) { $this->var = $_var; } } $_new = new age(30); echo $_new->_var; // Последует ошибка так как обращение к члену возможно только внутри самого класса.

Принцип инкапсуляции - это возможность скрыть реализацию объекта с использованием спецификаторов доступа. При этом мы избавляем и без того загружанное сознание разработчика от лишних деталей.

Слова "public, protected, private", которые называются были введены в PHP 5, в более ранних версиях использовалось ключевое слово "var".