Page 64 - 4636
P. 64

class Page {
           }
           Розробляються  потрібні  класу  атрибути.  Елементи,  які,  можливо,  доведеться  змінювати  від
        сторінки  до  сторінки,  ми  визначимо  як  атрибути  класу.  Основний  вміст  сторінки,  яка  буде
        представлена комбінацією HTML-дескрипторів і тексту, назвемо $content. Вміст можна оголосити
        за допомогою наступного рядка коду всередині визначення класу: public $content; Ми можемо
        також  визначити  атрибути  для  зберігання  заголовка  сторінки.  Мабуть,  доведеться  змінювати,  щоб
        відвідувач  чітко  знав,  яку  він  переглядає  сторінку.  Замість  використання  порожніх  заголовків,  ми
        задамо заголовок, але за замовчуванням за допомогою такого оголошення: public $title"ВОВАН
        Convulsing Pty Ltd"; Більшість комерційних веб-сторінок включають у себе метадескрипторы,
        допомагають  пошукових  механізмів  виконувати  їх  індексацію.  Щоб  вони  були  корисні,
        метадескриптори, мабуть, повинні змінюватися від сторінки до сторінки. У цьому випадку ми також
        визначаємо значення за замовчуванням:public $keywords = "ВОВАН Convulsing, Реальний
        сайт, пошукові механізми - мої найкращі друзі"; Навігаційні кнопки, показані на початковій сторінці,
        швидше  за  все,  повинні  залишатися  незмінними  на  всіх  сторінках,  щоб  відвідувачі  не  плуталися;
        проте,  щоб  їх  можна  було  легко  змінити,  їх  також  краще  зробити  атрибутами.  Оскільки  кількість
        кнопок  може  змінюватися,  ми  оголошуємо  масив  і  зберігаємо  в  ньому  як  текст  кнопки,  так  і  URL
        (Uniform Resource Locator - уніфікований вказівник ресурсів), на який вона повинна вказувати.
           public $buttons = array( "Головна" => "home.php","Контакти" =>
        "contact.php","Послуги" => "services.php","Карта сайту" => "map.php");
           Щоб мати можливість виконувати ті чи інші функції, класу також необхідні операції. Їх визначення
        можна  почати  з  визначення  функцій  доступу,  що  забезпечують  установку  і  отримання  значень
        атрибутів,  які  ми  визначили:public  function  set($name,  $value)  {$this->$name  =
        Svalue;) Функція set() не містить перевірки на помилки (для стислості), однак цю можливість
        при  необхідності  можна  легко  додати.  Оскільки  малоймовірно,  що  будь-які  з  цих  значень  будуть
        запитуватися ззовні класу, ми вирішили не визначати функцію__get(). Основне призначення цього
        класу  полягає  в  тому,  щоб  відображати  HTML  -  сторінки,  а  для  цього  необхідна  функція.  Вона
        отримує ім'я Display() набуває такого вигляду:
           publicfunction Display() {
           echo "<html>\n<head>\n";?this -> DisplayTitleO ;$this ->
           DisplayKeywords () ;$this -> DisplayStyles();
           echo "</head>\n<body>\n";
           $this -> DispIayHeader();
           $this -> DisplayMenu($this->buttons); echo
           $this->content;
           $this -> DisplayFooter(); echo
           "</body>\n</html>\n";
           }

           Дана функція включає в себе кілька простих операторів echo для відображення HTML-тексту, але
        в основному складається з викликів інших функцій класу. Як не важко здогадатися, з їх іменами ці
        функції відображають різні частини сторінки.Зовсім не обов'язково організовувати функції подібним
        чином. Всі ці окремі функції можна було б об'єднати в одну велику функцію. Ми ж запровадили таке
        розділення  з  ряду  причин.  Кожна  функція  повинна  вирішувати  певне  завдання.  Чим  простіше  це
        завдання, тим простіше створювати і тестувати функцію. Але не слід заходити надто далеко в цьому
        напрямку - якщо ви розіб'єте програму на дуже велику кількість невеликих фрагментів, її буде важко
        читати.  Використовуючи  спадкування,  ми  можемо  виконувати  перевизначення  операцій.  Можна
        замінити одну велику  функцію Display(), однак малоймовірно, щоб ми захотіли змінити спосіб
        відображення всієї сторінки. Набагато раціональніше розбити дії з відображення на кілька самостійних
        завдань  і  мати  можливість  виконувати  перевизначення  тільки  тих  частин,  які  потрібно  змінити.
        Функція  Display  (відображення)  викликає  функції  DisplayTitle()  (відобразити  заголовок),
        DisplayKeywords()  (відобразити  ключові  слова),  DisplayStyles()  (відобразити  стилі),
                                                            61
   59   60   61   62   63   64   65   66   67   68   69