我目前正在开发一个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;
}
此外,结果对象延伸的结果摘要该类包含原始数据的访问器,设置器和计算方法。这些“计算”方法中的每一个都会返回一个可以分配给行对象的关联数据数组。结果对象和抽象类都是很长的,而且看起来很不一致。
所以总结......我已经结束了一个大型的结果模型,它完成所有的计算并返回所有的行对象。虽然它确实有效,但我确信有更好的做事方式。我应该在控制器中建立行吗?我是否应该只从模型中调用计算?有没有人有任何抽象这样的东西的经验?
我很抱歉这是一个不好的解释。如果有人有任何问题可以发布,请告诉我。