Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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, даже когда она не нужна на странице.
Т.е. может получиться, что в базовом классе я опишу все возможные случаи использования страницы, на деле использоваться будут лишь несколько из них, а осталные - грузятся в холостую?
Спасибо за внимание!
Борис. |
|
Вернуться к началу |
|
|
Moby
Зарегистрирован: 19.11.2004 Сообщения: 268
|
Добавлено: Вт Апр 26 2005 11:07 Заголовок сообщения: |
|
|
насколько я понял делаешь бекэнд ЦМСа... мне кажется классы излишне для твоей задачи, а стоит подумать над написанием ф-ии вывода и о структуре страницы, ибо при добавлении дополнительно фенечки тебе приходится дописывать программный код, да к тому же и не в одном месте. готового рецепта я тебе не подскажу, поскольку сам тока начала разрабатывать что то подобное. зато с удовольствием послушаю что скажут другие.
пока я делал просто, если у меня есть шаблонное оформления для страниц, то я делала _ОДИН_ файл вывода, где был вшит шаблон, он подключался из файлов обработчиков с соответствующими параметрами... всякие мода в шаблон в свою очередь так же инклудились в нужном месте. способ не есть гут, но зато при необходимости что то поменять, достаточно поменять это что то лишь в одном файле. _________________ Профи - это оборзевший ламмер |
|
Вернуться к началу |
|
|
rashkin
Зарегистрирован: 09.05.2005 Сообщения: 1
|
|
Вернуться к началу |
|
|
|