2Hub
1.
я совершенно не настаиваю на своем подходе. я же написал - для меня это очевидно, но это не значит, что для всех. у меня есть свои аргументы, некоторые из них я уже выссказывал на этом форуме.
2.
я же написал - это именно класс. т.е. после его написания, страница вообще не знает ничего о бд, она только парсит данные(которые вытянул для нее класс и выводит их на экран).
пример, рассмотрим простейший класс:
Код:
class Item extends AbstractItem //base item
{
var $itemInfo = array(
'id'=>0,
'catid'=>0,
'title'=>''
);
var $itemCollection = array();
.
.
.
function GetItemById($itemID)
{
$db = new MySql(null,null,null,null);
$db->MySql_Connect();
$db->MySql_SelectDb();
$selectQuery = "select itm_ID, cat_ID, itm_TITLE from cat_item where itm_ID = " . $itemID . " limit 1";
$db->MySql_QueryDb($selectQuery);
if ($db->dbResult != null)
{
while($row = mysql_fetch_assoc($db->dbResult))
{
$this->itemInfo['id'] = $row['itm_ID'];
$this->itemInfo['catid'] = $row['cat_ID'];
$this->itemInfo['title'] = $row['itm_TITLE'];
}
return 0;
}
return -1;
}
.
.
.
}
страница "x" будет в таком случае следующей:
Код:
$item = new Item(); //default constructor
if ($item->GetItemById(1) == 0)
{
print_r($item->itemInfo);
}
в чем суть?
в том, что страница "x" ничего не знает ни о бд, ни о запросах, вообще ни о чем, вся ее задача это вывести данные на экран.
при подобной архитектуре, приложение становится очень гибким, а код можно реалньо использовать во множестве проектов, т.к. нужно будет менять только вывод(HTML, XML, ETC).
если же нету времени, то я переношу логику на 3-ий этап.
насчет базы. вообще это личное дело каждого, читал о том, что нету единого подхода к этой проблеме(где должна быть бизнес-логика). сам же ,по возможности, предпочитаю реализовывать ее именно через базу, но т.к. я последнее время сижу на mysql 3.23.5x - там особенно ничего не сделаешь.
про дизайнера - я все написал. добавить мне нечего.
p.s. в данном случа программист должен будет распарсить шаблон, а верстальщик собвственно их сделать.
пример опять же:
дизайнер сделал макет, эских или предвариетльную верстку:
элемент "список"
верстальщик сделал:
Код:
<!-- BEGIN list -->
<table>
<!-- BEGIN list_item -->
<tr>
<td>
{item_title}
</td>
</tr>
<!-- END list_item -->
</table>
<!-- END list -->
программист(псевдо шаблонизатор):
Код:
$listTpl = $tpl->fetchblock("list");
foreach($item->itemCollection as $itemObject)
{
$listItemTpl = $listTpl->fetchBlock(list_item);
$listItemTpl->assign("item_title",$itemObject["title"]);
$listTpl->assign("list_item",$listItemTpl );
$listItemTpl->reset();
}
$tpl->assign("list",$listTpl);