0

如果我有一个Order对象,并且每个对象Order都有一个对象Customer应该Order持有什么,一个Customer对象或客户 ID 或两者兼而有之?

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

谢谢。

4

1 回答 1

2

不要将 db 思维与 PHP 代码设计混为一谈。通常应将属性设置为对象本身,而不是其 id。像这样:

class Order {

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


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

}

但是有一些原因可能只需要知道联系人的身份。最好的例子是必须从数据库中获取联系人,但您通常不需要其信息,除非有特殊情况。然后,仅将 id 作为类属性并在需要时获取联系人可能很有用。(称为“延迟加载”)。请注意,“延迟加载”可能会被框架隐藏在幕后。

于 2013-03-08T21:59:25.770 回答