首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何才能"composer require“仅仅是Doctrine ORM EntityManagerInterface

我如何才能"composer require“仅仅是Doctrine ORM EntityManagerInterface
EN

Stack Overflow用户
提问于 2019-12-11 23:49:03
回答 1查看 93关注 0票数 0

我最近创建的包依赖于存储库接口。源数据的选择之一是数据库和Doctrine ORM。因为数据库只是一种可能的选择,所以我不想集成整个Doctrine ORM包,而是创建一个仅依赖于Doctrine\ORM\EntityManagerInterface的适当适配器。问题是我如何才能部分地从Doctrine ORM中"composer require“?我想补充的是,我不可能找到任何单独的包与Doctrine ORM EntityManagerInterface。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-12 00:25:54

不可能只需要一个包中的一个类/接口。相反,您可以做的是需要doctrine/persistence。这个库提供了持久化接口,然后Doctrine ORM/ODM使用这些接口。然后,您将依赖ObjectManager-interface,而不是依赖于EntityManagerInterface

如果您既不想依赖doctrine/orm,也不想依赖doctrine/persistence,那么您应该使用require-devsuggests,以便在开发过程中使用这些依赖项,例如,针对Doctrine EntityManager编写测试,并告知您的库的用户您明确支持哪些持久化库,也需要这些库。

您还可以创建自己的EntityManagerInterface,然后提供第二个包,以便与不同的提供程序集成,然后在适配器中实现该接口。因此,您不必将custom /orm引入您的库中,而是公开您的接口,并为custom/orm之类的数据提供程序提供定制库。通过这种方式,您可以反转依赖项要求,但不幸的是,您将有更多的维护工作。你可以看看像php-http/httplug这样的项目和相应的php-http/*-client包来获得灵感。当涉及到集成多个客户端时,它们有类似的方法(guzzle,curl,...)并在它们之上提供一个通用的抽象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59289457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档