我怎么能“要求作案者”只是Doctrine ORM EntityManagerInterface

问题描述 投票:0回答:1

我最近创建的包依赖于存储库接口。源数据的选择之一是数据库和Doctrine ORM。由于数据库只是可能的选择之一,因此我不想集成整个Doctrine ORM包,而是要创建一个仅依赖于Doctrine \ ORM \ EntityManagerInterface的适当适配器。问题是我如何才能部分地从Doctrine ORM中“要求作曲家”?我想补充一点,我无法使用Doctrine ORM EntityManagerInterface找到任何单独的程序包。

提前感谢。

orm doctrine composer-php require
1个回答
1
投票

没有办法只需要包中的单个类/接口。相反,您需要执行的操作是doctrine/persistence。该库提供持久性接口,然后由Doctrine ORM / ODM使用。然后,您将不再依赖EntityManagerInterface接口。

[如果您既不想依赖于教义/规范,也不想依赖于教义/持久性,那么您应该使用EntityManagerInterfaceObjectManager来允许在开发过程中使用这些依赖项,例如用于针对Doctrine EntityManager编写测试,并告知您的库用户,您明确支持哪些持久性库,也需要它们。

您还可以创建自己的ObjectManager,然后提供第二个软件包以与不同的提供程序集成,然后在适配器中实现该接口。因此,您不必公开自己的理论/规范,而是公开自己的界面,并为诸如理论/规范之类的数据提供者提供自定义库。这样,您就可以逆转依赖项要求,但是不幸的是,您将需要进行更多的维护工作。您可以查看require-dev之类的项目以及相应的php-http / *-client软件包以获取启发。在集成多个客户端(枪口,卷曲,...)并在它们之上提供通用抽象时,它们具有相似的方法。

© www.soinside.com 2019 - 2024. All rights reserved.