Page 68 - 4636
P. 68
DisplayKeywords ();Sthis ->> DisplayStyles (); echo
"</head>\n<body>\n";$this -> DisplayHeader0;$this -> DisplayMenu($this-
>buttons);$this -> DisplayMenu($this->row2buttons); echo $this-
>content;$this -> DisplayFooter (); echo
"</body>\n</html>\n";)$services = new ServicesPage();$services ->
content = "<p>"."Компанія BOBAH Convulsing пропонує безліч послуг.
Можливо,"."якщо ми виконаємо реінжиніринг вашого лізингу, логістика
вашого"."сайдинга зросте. Може бути, все, що вам потрібно - це чітке
"."з'ясування своєї мети або новий збірник скоромовок.</р>";?services -
> DisplayO;
Функція DisplayO з перевизначенням дуже схожа на функцію в батьківському класі, але містить
один додатковий рядок: $this -> DisplayMenu($this->row2buttons);який другий раз
викликає операцію DisplayMenu() і створює другу панель меню.
За межами визначення класу ми створюємо екземпляр класу ServicesPage, встановлюємо
значення, які повинні відрізнятися від значень за замовчуванням, і викликаємо операцію Display().
На рис. 2.5 показаний новий варіант стандартної сторінки. При цьому нам довелося створити код
тільки для відмінних частин сторінок.
Рисунок 2.5 - Сторінка послуг, створена з використанням механізму спадкування, що
дозволило повторно використовувати більшу частину коду стандартної сторінки
Створення сторінок за допомогою РНР-класів має очевидні переваги. Оскільки клас виконує більшу
частину дій, для створення нової сторінки доводиться виконувати менший обсяг роботи. Ми можемо
оновлювати всі сторінки, для цього достатньо оновити один клас. Користуючись механізмом
успадкування, з оригіналу можна отримувати різні версії класу, зберігаючи при цьому зазначені вище
переваги. Однак, як це часто буває в житті, за згадані переваги доводиться платити, Для створення
сторінок сценарію потрібно більше процесорних операцій, ніж для простоїв завантаження статичної
HTML-сторінки з диска і пересилання її в браузер. Для сайту з високим трафіком це має велике
значення, оскільки вам доведеться або використовувати статичні HTML-сторінки, або за можливості
кешувати висновок сценаріїв, щоб тим самим зменшити навантаження на сервер.
Додаткові об'єктно - орієнтовані можливості в РНР
Далі обговорюватимуться додаткові об'єктно-орієнтовані можливості РНР.
Використання констант класу
У РНР можливе створення констант класу. Константа класу може використовуватися без
необхідності створення екземпляра класу, як показано в наступному прикладі:
<?phpclass Math { const pi = 3.14159;}echo "Math:: pi =
".Math::pi."\n";?>
65