Page 63 - 4636
P. 63
display() {
//
}
}
Цей приклад демонструє обхідний шлях реалізації множинного спадкування, оскільки клас
webPage може бути успадкований від одного класу і реалізовувати один або більше інтерфейсів. За
відсутності методів, вказаних в інтерфейсі (в даному випадку display()), генерується фатальна
помилка.
Проектування класів
Тепер, коли ви ознайомилися з деякими поняттями та ідеями, що лежать в основі об'єктів і класів, і
з синтаксисом їх реалізації в РНР, можна переходити до проектування "корисних класів. Багато класів
у коді будуть представляти класи або категорії об'єктів реального світу. Класи, якими ви, можливо,
скористаєтеся при розробці веб-додатків, можуть включати сторінки компоненти
користувальницького інтерфейсу, купівельні візки, обробники помилок, категорії товарів або клієнтів.
Об'єкти у вашому коді можуть також представляти конкретні екземпляри раніше згаданих класів -
наприклад, домашню сторінку, конкретну кнопку або купівельний візок, яким якийсь Петя Іванов
користується в конкретний момент часу. Сам Петя Іванов може бути представлений об'єктом типу
клієнт. Кожен товар, який купує Петя, може бути представлений об'єктом, що належить до певної
категорії або класу.
Раніше для забезпечення однакового зовнішнього вигляду різних сторінок веб-сайту вигаданої
компанії ВОВАН Convulsing використовували прості включаючі файли. Скориставшись класами, а
також можливістю заощаджувати час, що надається механізмом успадкування, ви можете створити
більш досконалу версію сайту. Ми хочемо мати можливість швидко створювати сторінки для сайту
ВОВАН Convulsing, які зберігають єдиний стиль оформлення і ведуть себе однаково.
Для цілей даного прикладу ми створимо клас сторінки на ім’я Page. Основне призначення цього
класу - обмежити обсяг HTML-коду, необхідного для створення нової сторінки. Він повинен
допускати модифікацію тих частин, які змінюються від сторінки до сторінки, і забезпечувати
автоматичну генерацію тих фрагментів, які залишаються незмінними на кожній сторінці. Клас
повинен надавати гнучку структуру для побудови нових сторінок, але при цьому не повинно
обмежувати свободу дій. Оскільки ми генеруємо сторінку за допомогою сценарію, а не статичний
HTML, ми можемо скористатися будь-якою кількістю корисних засобів, у тому числі новими
функціональними можливостями:
змінювати елементи сторінки тільки в одному місці. Наприклад, якщо ми вносимо зміни до
примітки щодо авторських прав або додаємо додаткову кнопку, то повинні вносити відповідну зміну
тільки в якомусь одному місці;
мати стандартний вміст для більшої частини сторінки і при цьому мати можливість при
необхідності змінювати будь-який елемент, встановлюючи власні значення таких елементів, як,
наприклад, заголовок і метаде-скриптори;
розпізнавати, яка сторінка проглядається, і змінювати відповідним чином значення
навігаційних елементів. Наприклад, немає сенсу встановлювати на головній сторінці кнопку,
натискання якої викликає перехід на ту ж домашню сторінку;
замінювати стандартні елементи на конкретних сторінках. Наприклад, якщо в певних розділах
сайту потрібні інші навігаційні кнопки, ми повинні мати можливість замінювати ними стандартні
кнопки.
Написання коду класу
Отже, ми визначили, яким має бути висновок розроблюваного коду, і які функції він має
виконувати, і тепер потрібно реалізувати цей код. Пізніше у цій лекції мова піде про проектування та
управління великими проектами. А поки ми зосередимо увагу на особливості написання об'єктно-
орієнтованого РНР-коду. Класу необхідно присвоїти логічне ім'я. Оскільки він представляє сторінку,
назвемо його Page. Для оголошення класу Page слід ввести:
60