Інструкції - об'єктно-орієнтоване програмування в php - private, protected і public

private, protected і public

В PHP 5 порядок визначення та способи використання класів не зазнали істотних змін. Насправді, код з лістингу 1 буде працювати в PHP 5 так, як належить. Однак такий спосіб визначення класу вже не застосовується. У лістингу 3 представлений новий варіант визначення класу, розглянутого нами в попередньому прикладі.







Відмінність полягає в використанні нової важливої ​​особливості в моделі об'єктного орієнтування PHP 5 - контролі доступу.

У PHP 4 не існувало поняття контролю доступу всередині об'єктів. Якщо сторонній розробник використав клас myPHP4Class, можна було вільно змінювати або зчитувати значення змінної $ my_variable. З іншого боку, в PHP 5 об'єктна модель передбачає три рівня доступу до членів класу, що обмежують дані, які можуть бути розкладені в сценаріях. Це рівні public, private і protected; їх можна застосовувати і до методів, і до властивостей класу, як показано в лістингу 3.

До членів класу, які оголошені як public (загальнодоступні), доступ може бути здійснений з будь-якого місця в межах сценарію. За допомогою об'єкта ви матимете змогу дзвонити або видозмінювати або зсередини самого об'єкта, або за його межами. Навпаки, доступ до членів класу, які були оголошені як private (закриті), може бути здійснений тільки з примірника цього класу за допомогою змінної $ this. Подивіться, як змінився код, представлений в лістингу 4. в порівнянні з кодом з лістингу 3.







Якщо створити екземпляр myPHP5Class, то при зверненні до властивості $ my_variable ззовні об'єкта виникне помилка PHP:

При виконанні попереднього коду буде виведено наступне повідомлення про помилку:

Викликаний метод my_method (MyParam)!
Значення внутрішньої змінної:
Fatal error: Can not access private property myPHP5Class :: $ my_variable in.

(Непоправна помилка: Неможливий доступ до закритого властивості myPHP5Class :: my_variable в.)

Третім і останнім рівнем доступу в PHP є protected (захищений). Цей рівень подібний до рівня private, оскільки він забороняє зовнішній доступ до члена класу. Однак на відміну від рівня private, що обмежує доступ тільки до того класу, в якому він визначений, рівень protected дозволяє доступ як з нього самого, так і з будь-яких дочірніх класів. Більш докладно про дочірніх класах та спадкуванні ми поговоримо в розділі "Спадкування класів" далі в цій інструкції.







Схожі статті