Класи в обєктно-орієнтованому програмуванні на php. Клас ООП в PHP

58

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

У минулій статті ми з Вами короткого розглянули поняття клас, значить давайте закріпимо отримані знання і навчимося працювати з ними.

Отже, клас – це основа об’єктно-орієнтованого програмування на PHP і по суті це контейнер для логічно пов’язаних даних (властивостей) і функцій (методів) для роботи з ними. При цьому клас – це ще і своєрідний тип даних, якщо говорити з точки зору структури скрипта. Дані, які описані в класі і логіка роботи з ними, як було сказано у попередній статті, обов’язково відносяться до певної сутності, тобто деякого певного елемента майбутньої програми.

Приміром, якщо необхідно реалізувати додаток для роботи з користувачами і з написаними ними статтями, то, як мінімум, необхідно описати два відповідних класу. Звичайно, ніхто не заборонить Вам в одному класі описати весь функціонал майбутнього додатки, але в цьому випадку в класі буде визначено кілька сутностей (користувачі та статті), що суперечить загальній парадигмі об’єктно-орієнтованого програмування.

Якщо говорити простою мовою, то клас – це свого роду креслення (повторююсь з попередньої статті), наприклад, майбутнього будинку. А значить будинок – це окрема сутність, властивості – колір, кількість поверхів, вікон, розмір і т. д (властивості класу). А тек ж з певними можливостями – відкриття і закриття вікон і дверей, подача води в санвузли тощо (методи класу).

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

Створення класу ооп php починається з ключового слова class, за яким слід довільне ім’я.

Імена класів можуть складатися з будь-якого поєднання букв і цифр, але замете, воно не коли не може починатися з цифри. Код, який пов’язаний з класом, повинен бути укладений у фігурні дужки.

Клас, який визначено вище, цілком працездатний, правда у нього поки немає функціоналу, а значить корисність його незначна. Але хотів би зазначити, що класи подібного роду (без функціоналу) Ви часто будете зустрічати у своїй практиці при роботі з різними бібліотеками, але зараз я не буду на цьому зупинятися, так як це не тема поточної статті.

Але це не повна структура класу ооп в php, так як клас повинен володіти деякими особливостями і функціоналом, відповідно у класу необхідно визначити властивості і методи.

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

У прикладі вище клас MyClass, були додані три властивості — $prop1, $prop2, $prop3, кожному з яких присвоєно певний початкове значення. А значить, всі створювані об’єкти даного класу на даному етапі будуть містити початкові дані, обумовлені створеними властивостями.

Методи – це функції, описані в структурі класу і за великим рахунком описуються аналогічно звичайним користувальницьким функцій. Єдино, як і властивості, необхідно перед ключовим словом function вказати спецификатор доступу.

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

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

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

В абстрактному класі Ви можете створювати необхідні методи і властивості, точно також як і в звичайному, але будь-яка спроба створити його екземпляр призведе до помилки. Якщо ж ми вже згадали абстрактні класи, існує таке поняття як абстрактний метод, який передбачає метод, але без реалізації (без коду).

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

Тепер Ви знаєте, що таке класи ООП підходу php, а значить дану статтю можна завершувати. Всього Вам доброго і вдалого кодування!