Я новичок в php и zend framework и очень сомневаюсь в следующем:
Например, у меня есть две таблицы:
table1: поле (id, высота, ширина, длина, вес)
table2: метки (id, boxid, текст, позиция)
tags.boxid -> box.id
(label.boxid - это ключ извне для primary_key box.id)
Я сгенерировал два отдельных стандартных класса Zend_Db_Table_Abstract + Model + Mapper для обеих таблиц, которые содержат все методы set, get, fetchAll, fetchList.
Вопрос: безопасно ли расширять Box Model до классов LabeledBox Model следующим образом:
class NS_Model_LabeledBox extends NS_Model_Box {
protected $_labels;
public function setLabels($objs)
{
$this->_labels=$objs;
return $this;
}
public function getLabels()
{
return $this->_labels;
}
public function getMapper()
{
if (null === $this->_mapper) {
$this->setMapper(new NS_Model_LabeledBoxMapper());
}
return $this->_mapper;
}
}
вместе с классами Mapper, такими как:
class NS_Model_LabeledBoxMapper extends NS_Model_BoxMapper {
public function fetchAll()
{
$resultSet = $this->getDbTable()->fetchAll();
$entries = array();
foreach ($resultSet as $row) {
$entry = new NS_Model_Box();
...setting box properties code...
//fetching and setting labels for the box
$labels = new NS_Model_Labels();
$entry->setLabels(
$labels->fetchList("boxid='" . $row->id . "'")
);
}
$entries[] = $entry;
}
}
чтобы я наконец смог запустить:
$labeledbox = new NS_Model_LabeledBox();
$entries = $labeledbox->fetchAll();
foreach($entries as $entry)
{
echo $entry->getId();
echo $entry->getWeight();
foreach($entry->getLabels() as $lables)
{
echo $lables->getText();
}
}
Этот код работает нормально для меня.
Я просто не хочу оставаться в стороне, если выйдет новый релиз ZF с какими-либо существенными изменениями, которые могут повлиять на этот «трюк» (он все еще применяется к парадигме ООП).