Практичне застосування ООП в php5
Практичне застосування ООП в PHP5
Сьогодні досить часто для розробки сайтів використовується мова PHP. В останній п'ятій версії в PHP значно покращилася підтримка ООП (об'єктно-Орієнтованого Програмування). Тим не менш, багато програмісти при створенні сайтів використовують лише найпримітивніші можливості ООП, наприклад, інкапсуляцію даних. Безумовно, таке застосування ООП робить код більш якісним, але, застосовуючи і інші можливості ООП, можна домогтися більшого ефекту. Застосування поліморфізму і наслідування дозволяють значно скоротити код, одночасно роблячи його більш надійним. Також такий код можна часто використовувати повторно.
Домашня сторінка Васі Пупкіна
Ми будемо робити сторінку Васі Пупкіна. Вгорі сторінки повинна бути великий напис "Домашня сторінка Васі Пупкіна" (зазвичай це логотип сайту). Далі слід меню, що складається з наступних розділів: Головна сторінка, Біографія, Посилання. По середині сторінки йде текст розділу. Внизу для зручності дублюється меню.
Сайт буде складатися з чотирьох основних файлів:
У допоміжному файлі ми будемо зберігати всі наші класи.
В першу чергу визначимося з тим, що сторінка у нас буде класом. Визначимо абстрактний клас HTML-сторінки в файлі html.php:
abstract class HTMLPage
<
protected $ Title = "";
function __construct ($ Title)
<
$ This -> Title = "[Домашня сторінка Васі Пупкіна]". $ Title;
>
function Logo ()
<
echo "
Домашня сторінка Васі Пупкіна ";
>
function Menu ()
<
echo <<
| Головна сторінка | біографія | посилання |
HTML;
>
abstract function MainText ();
Давайте подивимося, для чого потрібен кожен з методів:
Назва методу Призначення методу
function __construct ($ Title) Створення та ініціалізація об'єкта (в нашому випадку установка назву сторінки).
function BeginHTML () Висновок заголовок html-файлу.
function EndHTML () Висновок закінчення html-файлу.
function Logo () Висновок логотипу сайту.
function Menu () Висновок головного меню сайту.
abstract function MainText () Висновок основного змісту веб-сторінки.
function Write () Висновок веб-сторінки, використовую методи для виведення окремих елементів веб-сторінки.
Частина методів служить для виведення окремих елементів сторінки, таких, як меню, логотип і так далі. У методі Write всі ці функції викликаються для того, щоб вивести всю сторінку цілком. Особливу увагу слід приділити абстрактного методу MainText. Цей метод називається абстрактним оскільки він не реалізований в цьому класі, а тільки оголошений. Цей метод буде перевизначений і реалізований в дочірніх класах. Так на сторінці посилань в цьому методі будуть виводитися посилання, а на сторінці біографії - текст біографії Васі Пупкіна. Сам клас оголошений також абстрактним, відповідно, буде неможливо створити екземпляри такого класу.
У класі оголошена змінна $ Title з областю видимості protected, тобто доступ до неї може отримати або сам клас, або його спадкоємці.
Тепер залишилося створити інші три файли. Покажу, як це можна зробити на прикладі index.php:
class IndexPage extends HTMLPage
<
function MainText ()
<
echo "
Ласкаво просимо на домашню сторінку Васі Пупкіна ";
>
>
$ Page = new IndexPage ( "Головна сторінка");
В даному випадку просто створюється новий клас IndexPage, похідний від класу HTMLPage і переопределяется метод MainText для виведення основного змісту сторінки.
Переваги використання ООП будуть тим більше, чим більше буде сайт. До того ж, обов'язково, по ходу роботи, вимоги до сайту будуть змінюватись. Наприклад, може знадобитися додати нову сторінку. Для цього треба буде лише створити новий файл з класом похідним від HTMLPage, перевизначити метод MainText і створити відповідний пункт меню. Ось, як можна використовувати спадкування. Також просто буде змінити дизайн усіх сторінок - все зміни будуть відбуватися в класі HTMLPage, інші сторінки унаследут дизайн автоматично.