我从大约 2007 年开始使用 Doctrine。我最近拿起了 Symfony2,其中包括 Doctrine 2,从我的角度来看,Doctrine 2 比 Doctrine 1 差得多。
似乎特别愚蠢的一件事是我必须做这样的事情才能检索某个记录:
$em->getRepository('VNNPressboxBundle:School')->find($id);
在教义 1 中,我相信我会做这样的事情:
Doctrine::getTable('School')->find($id);
冗长不是困扰我的。问题是任何我想对数据库做任何事情的地方,我都必须有一个$em
可用的。这意味着我必须有很多这样的方法:
public function foo($em, $something, $somethingElse)
{
}
public function bar($em, $thing)
{
}
public function baz($whatever, $whateverElse)
{
}
$em
拖着这些实例到处乱跑感觉不对。它也与该方法的真正作用无关。此外,我必须记住,每次我调用一个方法时,“这个方法需要$em
还是不需要?” 这完全是蹩脚的。我想知道我是否做错了,或者这只是他们希望你使用它的方式。肯定感觉不对。
不幸的是,我读过的 Doctrine 文档似乎重于实践而轻于理论。我在哪里可以找到关于 Doctrine 2 背后的设计决策的一些好的文档?