我如何 "composer require" 只是 Doctrine ORM EntityManagerInterface
How can I "composer require" just Doctrine ORM EntityManagerInterface
我最近创建的包依赖于存储库接口。源数据的选择之一是数据库和 Doctrine ORM。由于数据库只是可能的选择之一,我不想集成整个 Doctrine ORM 包,而是创建一个仅依赖于 Doctrine\ORM\EntityManagerInterface 的适当适配器。问题是我如何 "composer require" 部分来自 Doctrine ORM ?我想补充一点,我找不到任何带有 Doctrine ORM EntityManagerInterface 的单独包。
提前致谢。
无法只从包中要求一个 class/interface。你可以做的是 require doctrine/persistence. This library provides persistence interfaces which are then used by Doctrine ORM/ODM. Instead of relying on the EntityManagerInterface
you would then rely on the ObjectManager
-interface.
如果您既不想依赖 doctrine/orm 也不依赖 doctrine/persistence 那么您应该使用 require-dev
和 suggests
以允许在开发过程中使用这些依赖项,例如用于针对 Doctrine EntityManager 编写测试,并通知您的库的用户您明确支持和需要哪些持久性库。
您还可以创建自己的 EntityManagerInterface
,然后提供第二个包以与不同的提供程序集成,然后在适配器中实现该接口。因此,不是将 doctrine/orm 拉入您的库,而是公开您的界面并为 doctrine/orm 等数据提供者提供自定义库。这样你就颠倒了依赖需求,但不幸的是你会有更多的维护工作。您可以查看 php-http/httplug 等项目和相应的 php-http/*-client 包以获取灵感。在集成多个客户端(guzzle、curl 等)并在它们之上提供通用抽象时,他们采用类似的方法。
我最近创建的包依赖于存储库接口。源数据的选择之一是数据库和 Doctrine ORM。由于数据库只是可能的选择之一,我不想集成整个 Doctrine ORM 包,而是创建一个仅依赖于 Doctrine\ORM\EntityManagerInterface 的适当适配器。问题是我如何 "composer require" 部分来自 Doctrine ORM ?我想补充一点,我找不到任何带有 Doctrine ORM EntityManagerInterface 的单独包。
提前致谢。
无法只从包中要求一个 class/interface。你可以做的是 require doctrine/persistence. This library provides persistence interfaces which are then used by Doctrine ORM/ODM. Instead of relying on the EntityManagerInterface
you would then rely on the ObjectManager
-interface.
如果您既不想依赖 doctrine/orm 也不依赖 doctrine/persistence 那么您应该使用 require-dev
和 suggests
以允许在开发过程中使用这些依赖项,例如用于针对 Doctrine EntityManager 编写测试,并通知您的库的用户您明确支持和需要哪些持久性库。
您还可以创建自己的 EntityManagerInterface
,然后提供第二个包以与不同的提供程序集成,然后在适配器中实现该接口。因此,不是将 doctrine/orm 拉入您的库,而是公开您的界面并为 doctrine/orm 等数据提供者提供自定义库。这样你就颠倒了依赖需求,但不幸的是你会有更多的维护工作。您可以查看 php-http/httplug 等项目和相应的 php-http/*-client 包以获取灵感。在集成多个客户端(guzzle、curl 等)并在它们之上提供通用抽象时,他们采用类似的方法。