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