ticaje/agnostic-connector

无差别PHP连接器

1.0.5 2022-05-09 11:03 UTC

This package is auto-updated.

Last update: 2024-09-09 15:56:55 UTC


README

PHP无差别连接器

GPLv3 License Latest Version on Packagist Scrutinizer Total Downloads Blog

前言

这是一个持续进行的项目,简单来说,我将提供指导方针,以了解它的目的以及最常见的使用场景。

众所周知,在Web服务中公开的API定义了一系列策略,供其他系统交互时遵守,以实现通信,从而满足业务需求。

本主题中描述的模块构成某种中间件,减轻了设计者的工作负担,因为它允许在实现与外部API的交互时专注于高级用例。

安装

您可以使用composer(我唯一推荐的方式)安装此包

composer require ticaje/agnostic-connector

功能

此模块使用基础合同模块来符合该模块中所述的“设计由合同”方法的基础。

想法是建立一套标准程序来构建可扩展的外部API连接器,以规范重复的任务,如认证、请求和处理API响应,并为定义数据和服务合同留出空间,这实际上是领域模型的差异化因素。

此方法的目的在于提供一个框架,允许设计师以最小的努力反映特定领域可能涉及的业务策略。这样,架构师可以专注于创建纯业务实现,将基础设施工作留给这个中间件。

扩展组件

扩展的结构相当明确

  • 工厂:负责创建较低级别组件依赖项的低级别模块,例如登录和认证提供者。
  • 客户端:中间级别模块,封装外部API消费者,目前支持REST和SOAP。它提供基本操作。
  • 登录提供者:负责提供登录覆盖的中间级别模块
  • 认证提供者:提供认证的中间级别模块

上述所有模块都实现了相应的接口,因此通过依赖项容器,开发人员可以构建他们想要的解决方案,因为高级方法规定了一个隔离服务驱动的设计。

有趣的一面

重点是为每个特定的领域创建食谱

例如,默认情况下,REST连接器使用Guzzle库来抽象连接到REST API时的低级用例,如果您不想使用或无法使用Guzzle,或者您不确信Guzzle,则创建一个新的虚拟类型以供客户端工厂接口使用(如di.xml文件第4行所示),并定义对它的依赖,这样您的高级模块将使用这个新的虚拟类型。

另一方面,令牌提供者使用我们刚才定义的相同REST客户端来实现给定Token Service的令牌请求的特定逻辑。每当需要新的实现时,可以通过继承和接口实现的力量使用以实现特定的领域建模。

顺便说一句,尽管这个非常具体的实现虽然最小化,但它完全是功能性的;即便如此,在适当的情况下可以轻松覆盖,影响很小,因为已经应用了服务隔离模式。

文档和演示

有一个在本模块中实现的概念验证,在 Dummy Module中,请随时使用。

同样,基础合约模块的文档也已提供,您可以开始深入了解它。

贡献

请参阅CONTRIBUTING以获取详细信息。

致谢

许可证

GNU通用公共许可证(GPLv3)。请参阅许可证文件获取更多信息。