Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Наследование, Полиморфизм?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов
Предыдущая тема :: Следующая тема  
Автор Сообщение
Bdan



Зарегистрирован: 18.04.2005
Сообщения: 11
Откуда: Новосибирск

СообщениеДобавлено: Вт Апр 26 2005 07:13    Заголовок сообщения: Наследование, Полиморфизм? Ответить с цитатой

Добрый день!
У меня принципиальный вопрос.
Создаю класс WebPage, который отображает страницу: строит базовую таблицу и включает в нее шапку, меню, адрес, контент и копирайт (отдельный файл WebPage.inc).
Код:

<?php
class WebPage
{
function Display()
    {
     ?>
     <HTML><HEAD>
     <META http-equiv="Content-Language" content="ru">
     <META http-equiv="Content-Type" content="text/html; charset=windows-1251">
     <LINK href="./FenStyleGlobal.css" type="text/css" rel="stylesheet">
      <?php echo $this -> title;
            echo $this -> keywords; ?>
     </HEAD>
     <BODY background="#ffffff">
     <TABLE width="100%" height="100%" align="center">
      <TR valign="top">
       <TD width="100%">
        <?php
       //Отображение шапки
        $this -> DisplayShapka();
      //Отображение контента 
         echo $this -> content; ?>
        </TD>
       <TD style="border-left: 1px solid #666666">
         <TABLE border="0" width="260" align="right">
          <TR><TD><?php $this -> DisplayLogo(); ?></TD></TR>
          <TR><TD><?php $this -> DisplayMenu(); ?></TD></TR>
          <TR><TD height="50"></TD></TR>
          <TR><TD><?php $this -> DisplayAddress(); ?></TD></TR>
          <TR><TD><?php $this -> DisplayCopyright(); ?></TD></TR>
        </TABLE>
       </TD>
      </TR>
     </TABLE>
     </BODY></HTML>
     <?php
    }
// Здесь идут функции, я их не пишу для экономии места:
 function DisplayShapka()
  {......}
 function DisplayLogo()
  {......}
// и т.д.
}
?>

Все отлично, создаю файл file_name.php,
подключаю файл класса: require('WebPage.inc'), создаю обьект класса и вызываю функцию Display() - страница готова.

Теперь мне необходимо поместить под Шапкой новый модуль (например бланк заказов: Zakaz()).
Можно этот модуль в виде функции или класса поместить в базовый класс WebPage (WebPage.inc), файл страницы с бланком заказов примет вид:
Код:

<?php
 require('WebPage.inc');
 class ZakazPage extends WebPage
  {
    function Display()
    {
     ?>
     <HTML><HEAD>
     <META http-equiv="Content-Language" content="ru">
     <META http-equiv="Content-Type" content="text/html; charset=windows-1251">
     <LINK href="./FenStyleGlobal.css" type="text/css" rel="stylesheet">
      <?php echo $this -> title;
            echo $this -> keywords; ?>
     </HEAD>
     <BODY background="#ffffff">
     <TABLE width="100%" height="100%" align="center">
      <TR valign="top">
       <TD width="100%">
        <?php
       //Отображение шапки
        $this -> DisplayShapka();
        [b]$this -> Zakaz();[/b]
      //Отображение контента 
         echo $this -> content; ?>
        </TD>
       <TD style="border-left: 1px solid #666666">
         <TABLE border="0" width="260" align="right">
          <TR><TD><?php $this -> DisplayLogo(); ?></TD></TR>
          <TR><TD><?php $this -> DisplayMenu(); ?></TD></TR>
          <TR><TD height="50"></TD></TR>
          <TR><TD><?php $this -> DisplayAddress(); ?></TD></TR>
          <TR><TD><?php $this -> DisplayCopyright(); ?></TD></TR>
        </TABLE>
       </TD>
      </TR>
     </TABLE>
     </BODY></HTML>
     <?php
    }
  }
 $a = new ZakazPage;
 $a -> Display();
?>

Т.е. изменили ф-ю Display(), добавив в нее одну строчку. Таких страниц у меня несколько. Теперь я хочу добавить внизу каждой страницы строчку-ссылку "версия для печати". Нет ничего проще: Добавляем эту строчку в функцию Display() файла WebPage.inc. А в каждый файл с бланком заказа (20 шт.), где переписана функция Display() её добавлять вручную? Теряется вся идея наследования, или я чего-то на понимаю?
Еще функция Zakaz(), всегда присутствует в базовом классе и грузится в месте с файлом WebPage.inc, даже когда она не нужна на странице.
Т.е. может получиться, что в базовом классе я опишу все возможные случаи использования страницы, на деле использоваться будут лишь несколько из них, а осталные - грузятся в холостую?

Спасибо за внимание!
Борис.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Moby



Зарегистрирован: 19.11.2004
Сообщения: 268

СообщениеДобавлено: Вт Апр 26 2005 11:07    Заголовок сообщения: Ответить с цитатой

насколько я понял делаешь бекэнд ЦМСа... мне кажется классы излишне для твоей задачи, а стоит подумать над написанием ф-ии вывода и о структуре страницы, ибо при добавлении дополнительно фенечки тебе приходится дописывать программный код, да к тому же и не в одном месте. готового рецепта я тебе не подскажу, поскольку сам тока начала разрабатывать что то подобное. зато с удовольствием послушаю что скажут другие.
пока я делал просто, если у меня есть шаблонное оформления для страниц, то я делала _ОДИН_ файл вывода, где был вшит шаблон, он подключался из файлов обработчиков с соответствующими параметрами... всякие мода в шаблон в свою очередь так же инклудились в нужном месте. способ не есть гут, но зато при необходимости что то поменять, достаточно поменять это что то лишь в одном файле.
_________________
Профи - это оборзевший ламмер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
rashkin



Зарегистрирован: 09.05.2005
Сообщения: 1

СообщениеДобавлено: Пн Май 09 2005 12:41    Заголовок сообщения: здес более чем информации Ответить с цитатой

http://detail.phpclub.ru/article/oop_classes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...