我目前正在開發一個Zend Framework項目,其中用戶遍歷應用程序的最終結果爲他們提供了一個包含其結果的大表。該表格可以包含不同數量的行,其中大部分是作爲計算結果生成的。到現在爲止還挺好。以面向對象的方式構建複雜條件表PHP
第一個;儘管很小的障礙,但是桌子需要水平放置。也就是說,標題在第1列中,每個附加列代表一個數據實體項目。例如:
Forename | James | Richard Surname | Jones | Mayfair
同樣,這不是問題。當我來整理桌子時,問題就出現了。使用構建器模式,我有三個類:表,組和行。它們可以像這樣使用:
$table = new Table($attribs);
$group = new Group(); // Nothing special about groups, they're just there for helping with presentation
$row = new Row();
$row->setTitle('Forename')
->setData(array('item1' => 'James', 'item2' => 'Richard'))
$row2 = new Row();
$row2->setTitle('Surname')
->setData(array('item1' => 'Jones', 'item2' => 'Mayfair'))
$group->addRow($row)
->addRow($row2);
$table->addGroup($group);
上面的代碼片段出現在控制器的動作中。然後將表格對象傳遞給視圖,並且我有一個視圖幫助器,根據我自己的規範輸出到表格。
然而,我所面臨的挑戰是,我已經結束了一個非常混亂的'結果'模型。例如,我有很多的:
$group->addRow($this->_resultsModel->getSurnameRow());
的「_resultsModel」屬性是它包含了很多的做方法的對象:
public function getSurnameRow()
{
$row = new Row();
$row->setTitle('Surname');
$row->setData($this->_getAssociateArrayOfSurnames());
return $row;
}
此外,結果對象延伸的結果摘要該類包含原始數據的訪問器,設置器和計算方法。這些「計算」方法中的每一個都會返回一個可以分配給行對象的關聯數據數組。結果對象和抽象類都是很長的,而且看起來很不一致。
所以總結......我已經結束了一個大型的結果模型,它完成所有的計算並返回所有的行對象。雖然它確實有效,但我確信有更好的做事方式。我應該在控制器中建立行嗎?我是否應該只從模型中調用計算?有沒有人有任何抽象這樣的東西的經驗?
我很抱歉這是一個不好的解釋。如果有人有任何問題可以發佈,請告訴我。