Показать сообщение отдельно
Старый 17.01.2005, 19:05     # 58
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
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);
__________________
убрано по просьбе администратора

Последний раз редактировалось Sheryld; 17.01.2005 в 19:15.
Sheryld вне форума