如果我有一个Order
对象,并且每个对象Order
都有一个对象Customer
应该Order
持有什么,一个Customer
对象或客户 ID 或两者兼而有之?
它是否取决于上下文,或者因为我们正在处理 OOP 中的对象,所以Order
理想情况下应该保存一个Customer
对象,而不仅仅是它的 ID,如数据库列?
谢谢。
不要将 db 思维与 PHP 代码设计混为一谈。通常应将属性设置为对象本身,而不是其 id。像这样:
class Order {
/**
* @var Contact
*/
protected $contact;
public function __construct(Contact $contact) {
$this->contact = $contact;
}
}
但是有一些原因可能只需要知道联系人的身份。最好的例子是必须从数据库中获取联系人,但您通常不需要其信息,除非有特殊情况。然后,仅将 id 作为类属性并在需要时获取联系人可能很有用。(称为“延迟加载”)。请注意,“延迟加载”可能会被框架隐藏在幕后。