我是新來的PHP和Zend框架,並填寫有關下列非常不確定:擴展[Namespace] _Model_ [Table]類。它安全嗎?
例如,我有兩個表:
表1:箱(ID,高度,寬度,長度,重量)
表2:標籤(ID,boxid,文本,位置)
labels.boxid - > box.id
(labels.boxid爲primary_key box.id一個foreign_key)
我爲兩個表都生成了兩個單獨的標準Zend_Db_Table_Abstract + Model + Mapper類,它們包含所有set,get,fetchAll,fetchList方法。
問題:是安全的盒子模型擴展到LabeledBox模型類是這樣的:
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;
}
}
讓我終於可以運行:與映射器類這樣沿着
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;
}
}
$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();
}
}
此代碼適合我。 我只是不想被留下來,如果有任何重大變化,可能會影響這個「技巧」(它仍然適用於OOP範例)的ZF的新版本。
這不是一個真正的「竅門」。這只是面向對象,你在做什麼沒有錯。 – smack0007
謝謝! 是的,它是純粹的面向對象,這就是爲什麼它被引用的「詭計」) 沒有那麼多框架,我一直在相當長的時間(生命週期)工作。我希望有人會指出他自己的經歷。 – forker