当我打电话时应该发生什么$user->get_email_address()
?
选项 1:按需从数据库中提取电子邮件地址
public function get_email_address() {
if (!$this->email_address) {
$this->read_from_database('email_address');
}
return $this->email_address;
}
选项 2:在创建对象时从数据库中提取电子邮件地址(和其他用户属性)
public function __construct(..., $id = 0) {
if ($id) {
$this->load_all_data_from_db($id);
}
}
public function get_email_address() {
return $this->email_address;
}
我的基本问题是是否最好尽量减少数据库查询的数量,或者是否最好尽量减少从数据库传输的数据量。
另一种可能性是,最好在创建对象时加载您最需要的属性/包含最少的数据,并按需加载其他所有内容。
一个后续问题:像 Activerecord 这样的 ORM 抽象框架是做什么的?