原则 2 - 使用存储库



我想开始在新项目中使用 Doctrine 2,但我注意到 doctrine 现在允许定义存储库:http://mackstar.com/blog/2010/10/04/using-repositories-doctrine-2

我现在不确定如何构建我的项目,因为这不是使用存储库的目的之一,您可以在需要时切换到另一个 ORM。因此,如果您使用教义存储库,这种可能性就消失了。

或者我应该定义我自己的存储库,并在这些存储库中使用对教义存储库的调用?这似乎有点奇怪...

只是为了跟进评论,这是我使用的基本存储库类。

namespace CeradBundleCoreBundleDoctrine;
use DoctrineORMEntityRepository as BaseRepository;
class EntityRepository extends BaseRepository implements ApplicationRepository
{
    // Create main entity
    public function createEntity($params = array())
    {
        $entityName = $this->getEntityName();
        return new $entityName($params);
    }
    // Allow null for id
    public function find($id)
    {
        return $id ? parent::find($id) : null;
    }
    /* ==========================================================
     * Persistence
     */
    public function persist($entity) { return $this->getEntityManager()->persist($entity); }
    public function remove($entity)  { return $this->getEntityManager()->remove($entity);  }
    public function flush()          { return $this->getEntityManager()->flush();          }
    public function clear()          { return $this->getEntityManager()->clear();          }
}

能够支持多种存储库类型实际上非常有用。 我经常会实现 InMemory 存储库,这些存储库使用 yaml 文件进行初始开发和测试。

相关内容

  • 没有找到相关文章

最新更新