Властивості обєктно-орієнтованого програмування на PHP

30

Від автора: вітаю Вас, дорогий друже. Раніше ми з Вами говорили, що об’єкт – це набір даних, структурованих у відповідності з певним шаблоном, тобто класом і, по суті, дані об’єкта містяться в його властивостях, яким ми приділили дуже мало своєї уваги, а значить давайте, це виправимо і розглянемо властивості різних об’єктів в об’єктно-орієнтованому програмуванні на PHP.

Отже, властивості об’єктно-орієнтованого програмування на PHP це, як Ви знаєте звичайні змінні, які визначаються в класі. При цьому дуже часто властивості класу, так само називають змінними полями, вміст яких може змінюватися в кожному створюваному об’єкті. Нагадаю, що визначення властивостей дуже схоже на створення простих змінних, єдине, що обов’язково необхідно вказувати один з спецификаторов доступу, тобто ключових слів характеризують область видимості. У Вашому розпорядженні такі специфікатори: public, protected і private, але розглядати ці елементи ми з Вами будемо тоді, коли познайомимося з таким важливим поняттям як спадкування.

Тепер давайте створимо новий клас для роботи з користувачами і визначимо декілька властивостей.

При цьому були створені три властивості, у яких не визначено значення, тобто, по суті, вони порожні. При оголошенні властивостей були обрані специфікатори доступу public, що в свою чергу забезпечить повний доступ до них ззовні, контексту об’єкта.

Зверніть увагу, що специфікатори доступу, були введені в PHP, тільки починаючи з версії 5, відповідно, якщо Ви використовуєте їх в додатку, написаному під більш ранню версію – можуть виникнути помилки.

Далі давайте створимо об’єкт, щойно сформованого класу.

$newUser = new User();

Таким чином, у нас є новий об’єкт – новий користувач, але його дані не визначені, а отже, давайте вкажемо значення для його властивостей.

$newUser->name = «Ben»;
$newUser->login = «ben»;
$newUser->login = «[email protected]»;

Якщо пам’ятаєте, у попередній статті ми створювали клас, у якого у властивостях спочатку були прописані значення, так звані дані за замовчуванням. Для класу по роботі з користувачами, погодьтеся, немає сенсу, що ставити, так як кожен новий об’єкт – це новий користувач, дані якого унікальні. Таким чином, після створення об’єкта ми звертаємося до його цікавлять нас властивостям і визначаємо їх значення. Як Ви пам’ятаєте, для доступу необхідно використовувати поєднання символів «->», які так само дозволяють викликати на виконання певний метод класу, але зараз не про це.

Звичайно, визначивши значення властивостей, ми можемо їх вважати за необхідності, або ж надати нові — тобто працювати як із звичайними змінними.

echo $newUser->name;
$newUser->name = ‘Bob’;

Так само хотів би нагадати, що для зазначеного класу ми можемо визначити скільки завгодно об’єктів і для кожного з них значення вищевказаних властивостей потрібно вказувати окремо, так як немає даних за замовчуванням. Таким чином, кожен наступний об’єкт, по суті унікальним (окремий користувач, якщо мислити сутностями).

$secondUser = new User();
$newUser->name = «John»;
$newUser->login = «john»;
$newUser->login = «[email protected]»;

Властивості об’єктно-орієнтованого підходу не обов’язково оголошувати у самому класі, так як їх можна додати динамічно потрібного об’єкту.

$newUser->address = «Moscow»;

Застосувавши дану маніпуляцію, ми створимо властивість address для об’єкта $newUser і тільки для нього. Але зверніть увагу, цей спосіб хоч і цілком працездатний, але вважається поганим тоном в програмуванні, тому як тип об’єкта задає клас. Тобто саме він визначає, які властивості будуть використовуватися для зберігання інформації і які методи будуть маніпулювати ними. Створюючи властивість динамічно, ми відступаємо від заданої структури класу, або можна сказати інакше — створюємо, що то без креслення, а це ще й суперечить загальному принципу об’єктно-орієнтованого підходу. Хоча, повторюся, код цілком працездатний.

Так само хотів би звернути Вашу увагу, що властивості ООП підходу можуть бути статичними. Звичайно, відразу ж виникає запитання, що це означає? Дивіться, ми з Вами говорили, що клас це шаблон для побудови об’єкта і останні – це якісь активні елементи, з якими ведеться певна робота – звернення до властивостей, виклик на виконання методів і т. д. Але досить часто для реалізації конкретних завдань, необхідно отримувати доступ до властивостей не з об’єкта, а з контексту класу. В цьому випадку, необхідно створити так зване статичне властивість, класу, використовуючи ключове слово statiс.

Давайте розглянемо наступний клас:

class Core {
public static $numb = 0;
}

Як Ви бачите цілком звичайний клас, але у нього є всього лише одне статичне властивість, доступ до якого можна отримати без створення об’єкта, тобто, звертаючись до нього з класу. Відповідно для цього слід вказати ім’я класу, далі подвійне двокрапка і ім’я цікавить статичного властивості:

Core::$numb = 1;

Таким чином, в даному прикладі ми звернулися до статичного властивості класу і змінили його значення. Якщо пам’ятаєте, всі звичайні властивості класу, унікальні для кожного створеного об’єкта, але значення статичного властивості не прив’язується до об’єкту, відповідно змінивши його значення, Ви, по суті, змінили значення статичного властивості для конкретного класу. Відповідно статичні властивості ще називають змінними і властивостями класу, а не об’єкта. Ви запитаєте, а навіщо ж потрібні дані властивості. Більш докладну відповідь на це питання, буде наведений, коли ми познайомимося з методами об’єктів. Але коротко, все ж зазначу. Статичні властивості корисні тим, що вони доступні в будь-якому місці програми, якщо звичайно доступний клас. Тобто, Ви можете звернутися до властивості, не створюючи об’єкт класу, що дуже зручно. Так само статичні властивості доступний абсолютно кожному об’єкту класу, тобто ми можемо визначити деякі загальні дані для створюваних об’єктів.

Так чи інакше, властивості ООП на PHP ми будемо ще не раз використовувати в наступних статтях, а значить і закріплювати отримані знання по даній темі. Головне. Що Ви повинні засвоїти з даної статті – це те, що властивості об’єкта ООП, це, по суті, звичайні змінні, які можуть використовуватися для зберігання різних проміжних даних.

Більш докладно властивості ООП підходу розглянуто в преміум курсі з Об’єктно-орієнтованого програмування на PHP.

На цьому дана стаття завершена. Всього Вам доброго і вдалого кодування!!!