我正在考虑这样的问题......假设我们有一个类Person:
class Person {
private $iPersonId;
private $sName;
private $sLastName;
private $rConn;
public function __construct($rConn, $iPersonId) {
$this->rConn = $rConn;
$this->iPersonId = $iPersonId;
}
public function load() {
// load name and last name using the $rConn object and $iPersonId
}
}
现在我们想对很多人执行一些操作,所以我们编写了一个新类:
class People {
private $aPeople = array();
public function addPerson(Person $oPerson) {
// ...
}
public function loadPeople() {
// PROBLEM HERE //
}
}
现在有两个问题: 1. Person 和 People 具有相同的加载接口(函数 load()),但如果我想在 People 中迭代 $aPeople 来加载他们的数据,那么这将导致 maaaaany 查询,例如:
SELECT * FROM people WHERE id = 1
SELECT * FROM people WHERE id = 2
SELECT ......
.....
....
如果想加载 1000,那么事情会变得繁荣 :) 。
如何设计此代码以在一个查询中加载所有用户?(在)
- 我必须在添加到 People 的每个 Person 对象中继续使用依赖注入。这违反了 DRY 规则,而且看起来不太好。
那么亲爱的用户,设计这段代码的更好方法是什么?