分层?复杂Zend Framework模型/对象的结构

时间:2010-08-11 12:06:05

标签: oop zend-framework

在ZF中存储复杂模型的最佳方法是什么?在下面的例子中,每个属性应该完全是一个单独的模型,还是该项应该是一个多维数组(如下所示)?

object(Application_Model_Item)#79 (4) {
  ["_id":protected] => int(45)
  ["_name":protected] => string(5) "Bolts"
  ["_description":protected] => NULL
  ["_attributes":protected] => array(2) {
    [0] => array(2) {
      ["id"] => string(1) "3"
      ["name"] => string(4) "Size"
    }
    [1] => array(2) {
      ["id"] => string(1) "4"
      ["name"] => string(6) "Length"
    }
  }

提前致谢。

2 个答案:

答案 0 :(得分:1)

这完全取决于您的使用案例:

按ID或职位编制索引:

  • 如果您希望在访问特定属性时加快速度,请按照ID而不是索引位置索引属性。
  • 如果您想保留订单,请按索引位置和位置抵消金额对其进行排序。

独立表与本地数组:

  • 如果属性在多个项目中重复,则将它们作为自己的表格,并将属性引用到该表格。
  • 如果属性没有被重新引用并且对每个项目都是唯一的,那么将它们用作可序列化的数组(用于存储)就足以让它们成为自己的表格。

答案 1 :(得分:0)

在_attributes的情况下,我将使用对象数组。 所以它的属性将是一个新模型Attribute()

的数组

我为每个商业模式实体制作一个课程

["_attributes":protected] => array(2) {
    [0] => Object(Model_Attribute) {}
    [1] => Object(Model_Attribute) {}
}

class Model_Attribute {
  protected $id;
  public function getId();
  public function setId($id);
  .
  .
  .
}

我建议您查看Doctrine ORM 2.0 ,因为它可以支持上述设计。 看看这个页面,它可能会给你一个线索: http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en