Ініціалізація обєктів PHP

34

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

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

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

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

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

Ініціалізація об’єктів класу php буде виглядати наступним чином.

$obj1 = new MyClass();
$obj2= new MyClass();

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

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

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

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

var_dump($obj1);

В цьому випадку на екрані ми побачимо наступне.

Инициализация объектов PHP

Тобто ми бачимо значення властивостей, а так само ідентифікатор створеного об’єкта, в моєму випадку 1. Якщо роздрукувати другий створений об’єкт, по суті картина буде абсолютно такий же за винятком ідентифікатора. Тому давайте трохи змінимо другий об’єкт, а саме звернемося до його властивості $prop1, і присвоїмо нове значення, наприклад ‘Some String’.

$obj2->prop1 = «Some String»;

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

Инициализация объектов PHP

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

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

В свою чергу методи об’єкта, визначають його функціонал і доступ до них можна отримати, так само використовуючи знаки ‘->’. Наприклад:

echo $obj1->getStr();

Як Ви бачите, по суті, звичайний виклик функції, щоправда дана функція визначена в класі, а значить і в його об’єкта.

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

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