ado-dg/integration-model-generator

一个允许您从JSON对象生成PHP模型类,并使用这些模型简化API集成的包

dev-main 2021-06-05 17:54 UTC

This package is not auto-updated.

Last update: 2024-09-22 08:27:36 UTC


README

从JSON对象生成PHP模型类,用于API请求,使用wol-soft的php generator (https://github.com/wol-soft/php-json-schema-model-generator)。

目录

动机

此库是作为学士论文的一部分制作的,其目标是提高API集成的效率。这是通过为开发者提供生成API JSON主体的PHP模型的可能性来实现的。此库是一个正在进行的项目。

安装

推荐通过Composer安装integration-model-generator。

$ composer require ado-dg/integration-model-generator

基本用法

第一步是准备您的JSON,模型中需要动态的每个字段都需要在%字符之间设置其值

{
  "name": "%name%"
}

然后,生成器需要使用以下参数初始化

  • namespace: 要生成的模型的目标命名空间
  • model path: 要生成的模型的目标目录,如果不存在将创建,如果存在将清除
  • schema path: 存储由wol-soft的库所需的JSON模式的目录,如果不存在将创建

最后,可以通过调用生成器对象的"generateIntegrationModels"方法来进行生成。这需要以下参数

  • json: 要转换为模型类的JSON主体
  • model name: 要生成的模型类的名称(文件名和类名)

示例

以下示例是为Azure TTS API所需的JSON主体制作的。

JSON

{
  "documents": [
    {
      "id": 1,
      "text": "%text%"
    }
  ]
}

生成对应JSON的模型类的PHP代码

use ado_dg\IntegrationModelGenerator\Generator;

// Autoload files using the Composer autoloader.
require_once __DIR__ . '/../../vendor/autoload.php';

$json = file_get_contents(__DIR__ . '/../../storage/azure.json');
$generator = new Generator('App\Models\IntegrationModels', __DIR__ . '/../Models/IntegrationModels', __DIR__ . '/../schema');
$generator->generateIntegrationModels($json, 'AzureJsonBody');

现在模型类已生成,可以如下使用

$body = new App\Models\IntegrationModels\TestJsonBody(["text" => "This is a test sentence"]);
$json =  $body->jsonSerialize();

json变量现在可以作为JSON主体传递给HTTP客户端