订单对象持有客户对象或客户ID或两者?

时间:2013-03-08 21:54:53

标签: php oop

如果我有Order个对象且每个Order都有Customer Order对象应该保留的内容,Customer对象或客户ID或都?

它是否依赖于上下文,或者因为我们正在处理OOP中的对象,Order理想情况下应该保存Customer对象,而不仅仅是数据库列的ID?

感谢。

1 个答案:

答案 0 :(得分:2)

不要将db思维与PHP代码设计混合使用。规则属性应该设置为对象本身而不是其id。像这样:

class Order {

    /**
     * @var Contact
     */
    protected $contact;


    public function __construct(Contact $contact) {
        $this->contact = $contact;
    }

}

但有理由说,只需要联系人的ID就可以了。最好的例子是必须从数据库中获取联系人,但是你经常不需要它的信息,期望特殊情况。然后,仅将id作为类属性并在需要时获取联系人可能很有用。 (称为'延迟加载')。请注意,“延迟加载”可能会被框架隐藏在幕后。