Що таке обєктно-орієнтоване програмування на PHP?

35

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

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

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

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

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

Тому для початку, давайте розглянемо попередній приклад, але написаний на ООП.

getStr(«Hello world»);

Функціонал поточного коду абсолютно аналогічний, тобто все так само на екран відображається рядок «Hello World», різниця лише у підході до реалізації поставленої задачі.

Об’єктно-орієнтоване програмування – це підхід, завдяки якому ми думаємо і оперуємо в додатку конкретними сутностями, зокрема об’єктами, а не деякими абстрактними поняттями. Тобто в наведеному вище прикладі ми бачимо клас, в якому описана вся необхідна логіка — функціонал для виведення рядка на екран. Але при цьому, безпосередню роботу здійснює об’єкт, який був створений після всього класу. Звичайно, зараз поки що не зовсім зрозуміло, так як Ви не розумієте що таке клас і об’єкт, але далі ми поговоримо про це.

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

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

Переваги ООП на PHP.

Відносно простий для розуміння, так як дозволяє мислити в рамках тих реальних об’єктів, для яких пишеться додаток.

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

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

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

Тепер давайте більш детальніше поговоримо про класи і об’єкти, так як це основа всього ООП.

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

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

Таким чином, класи формують певну структуру даних, яка буде використана для створення об’єкта, який якраз і буде виконувати поставлені завдання. У прикладі з автомобілем — що то перевозити і т. д.

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

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

Тепер Ви знаєте, що значить об’єктно-орієнтована мова php. Ось власне і все що я хотів поговорити в даному уроці. А значить давайте прощатися. Всього Вам доброго і вдалого кодування!