我从2007年开始使用Doctrine。我最近学习了Symfony2,其中包括条令2,从我的角度来看,条令2比条令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
?"这完全是无稽之谈。我想知道我是不是做错了,或者这只是他们希望你使用它的方式。这肯定是错误的。
不幸的是,我所读到的学说文件似乎重实践,轻理论在哪里可以找到一些关于条令2背后的设计决策的好文件?
如果你想理解条令2,了解一点面向服务的体系结构和依赖注入似乎会有所帮助。