继 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会「智能」的解析这个链,就如开头展示所示,套娃模式 就完成了。
经测试,在 PHPStorm
及 Visual Studio Code
可正常链上几乎所有接口,请求参数描述也可以无脑式,从对应的方法中直接拷贝出去(没有任何方言的完整数据结构),当自有项目的数据接口参照。
最后
项目地址: https://github.com/TheNorthMemory/wechatpay-openapi ,composer源: https://packagist.org/packages/iwechatpay/openapi 欢迎体验此款 链式开发倍增器 工具包。
大佬666!