У чому полягає суть обєктно-орієнтованого програмування в PHP

34

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

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

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

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

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

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

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

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

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

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

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

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

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