评论

为 wechatpay-php 增加IDE提示的接口描述包 iwechatpay/openapi 介绍

wechapay-php 开发包的辅助包 iwechatpay/openapi 介绍

继 wechatpay/wechapay:v1.3.0 正式发布已经有一段时间了,这个版本上增加了一个特性,就是 增加IDE提示OpenAPI\V2&OpenAPI\V3的两个入口,在经过认真思考之后,现在是时候给大家介绍这款接口描述包了。

先看示例

原理解构

这个原理其实很多同学都用过,即代码注释 * property 属性,IDE都能够识别出来,遂把这个能力也Chainable起来,让接口描述,也成线性增长,从顶层,一层一层推演至最终HTTP VERBS(俗称:套娃模式)。

例如: V3.php 文件样本,如下:

<?php declare(strict_types=1);/* Generated file. DO NOT EDIT! */

namespace WeChatPay\OpenAPI;

/**
 * @property-read V3\Pay $pay
 * @property-read V3\Certificates $certificates
 */
interface V3
{
}

示例这个 interface (接口)有两个动态属性,而动态属性的类型,全命名空间模式下,是继承 WeChatPay\OpenAPI 命名空间的,即分别推演至 WeChatPay\OpenAPI\V3\Pay 接口及 WeChatPay\OpenAPI\V3\Certificates 接口,例如 V3/Certificates.php 文件,内容即如下:

<?php declare(strict_types=1);/* Generated file. DO NOT EDIT! */

namespace WeChatPay\OpenAPI\V3;

use Psr\Http\Message\ResponseInterface;
use GuzzleHttp\Promise\PromiseInterface;

/**
 * 这是一个纯接口描述文件,由程序自动生成,旨在为IDE提供结构提示,无他用。
 */
interface Certificates
{
    /**
     * 获取平台证书列表(同步模式)
     * @param array<string,mixed> $options
     * @link https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/applyments/chapter3_3.shtml
     */
    public function get(array $options = []): ResponseInterface;

    /**
     * 获取平台证书列表(异步模式)
     * @param array<string,mixed> $options
     * @link https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/applyments/chapter3_3.shtml#async
     */
    public function getAsync(array $options = []): PromiseInterface;
}

V3/Pay.php 文件内容,如下:

<?php declare(strict_types=1);/* Generated file. DO NOT EDIT! */

namespace WeChatPay\OpenAPI\V3;

/**
 * 这是一个纯接口描述文件,由程序自动生成,旨在为IDE提供结构提示,无他用。
 * @property-read Pay\Transactions $transactions
 * @property-read Pay\Partner $partner
 */
interface Pay
{
}

其又是一个接口链的描述文件,使用了顶层Chainable的描述方法,有两个动态属性,属性类型分别是 \WeChatPay\OpenAPI\V3\Pay\Transactions\WeChatPay\OpenAPI\V3\Pay\Partner 接口,IDE会「智能」的解析这个链,就如开头展示所示,套娃模式 就完成了。

经测试,在 PHPStormVisual Studio Code 可正常链上几乎所有接口,请求参数描述也可以无脑式,从对应的方法中直接拷贝出去(没有任何方言的完整数据结构),当自有项目的数据接口参照。

最后

项目地址: https://github.com/TheNorthMemory/wechatpay-openapi ,composer源: https://packagist.org/packages/iwechatpay/openapi 欢迎体验此款 链式开发倍增器 工具包。

最后一次编辑于  2021-09-27  
点赞 6
收藏
评论

2 个评论

  • សុបិន
    សុបិន
    发表于移动端
    2021-10-04
    。。。。
    2021-10-04
    赞同
    回复
  • 支付社区运营
    支付社区运营
    2021-09-27

    大佬666!

    2021-09-27
    赞同
    回复
登录 后发表内容