延迟加载相关域对象:何处/如何存储密钥?

时间:2012-06-22 00:34:55

标签: php oop lazy-loading

从数据库加载域对象后,我就拥有了一些相关对象的密钥。例如,当我加载“组织”时,我知道相关“所有者”的ID。

我希望所有者属性被延迟加载,因为我无法保证在请求或会话期间我会使用它。

因此,我看到它的方式,组织对象可以:

  1. 拥有OwnerId属性和Owner属性。 Owner属性只能按需填充(使用OwnerId进行查找)。在这种情况下,唯一的(小)挑战是保持两个属性同步;或
  2. 仅限拥有者财产。这最初将包含用于查找所有者的键(整数)。如果调用所有者,则该值将由Owner对象替换。在这种情况下,(小)挑战将是避免类型铸造问题。
  3. 哪种方法最好?为什么?还是有其他方法吗?我还缺少别的东西吗?

    我正在使用PHP,包括域,映射器和服务层。非常感谢您的想法!

1 个答案:

答案 0 :(得分:0)

我正在使用选项1(见上文)并且它正在平移。