【发布时间】:2015-12-03 21:35:02
【问题描述】:
我不时读到需要维护域对象之间的反向链接,但是我从来没有遇到过这样做的需要。我想知道这是否与我的编码风格有关,或者我使用 PHP 的事实。
例如,考虑一个运行兽医诊所的应用程序。所有者与一系列动物(他们的宠物)有联系。兽医也与一组动物(他们的病人)有联系。当动物的兽医发生变化时,我可以通过两种方式编写该方法。一、简单的方法:
class Animal {
//
public function changeVet(Veterinarian $vet) {
$this->vet = $vet;
}
}
其次,一种更复杂的维护反向链接的方法:
class Animal {
//
public function changeVet(Veterinarian $vet) {
$vet->addPatient($this);
$this->vet->removePatient($this);
$this->vet = $vet;
}
}
显然第二种方法要复杂得多,但我从来不需要使用它。如果我正在编写一个 Java 应用程序,其中内存模型在请求之间持久存在,我可以看到要求,但 PHP 不会发生这种情况。我错过了什么吗?
据我所知,不使用 PHP 维护反向链接的唯一缺点是开发人员需要了解事物是如何持久化的。例如,在上面的案例中,如果我需要在用于更改宠物兽医的相同请求中迭代兽医的患者集合,我需要重新加载集合(而不是点击链接)。这种情况很少发生。
【问题讨论】: