kshabazz/json-to-src

将 JSON 文件转换为源代码的程序。

安装: 1,224

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

开放问题: 6

类型:应用程序

0.0.1 2017-03-01 22:39 UTC

This package is auto-updated.

Last update: 2024-09-14 21:36:12 UTC


README

将 JSON 转换为源代码。

此工具接受 JSON 文件和其他所需输入,并在成功的情况下解析 JSON,输出(默认为 PHP)源文件。它对 JSON 进行递归处理,并将解析嵌套键值中的对象。此外,包含对象的数组将生成一个类,但只有一个类,因为假设所有元素类型相同。

特性

  • 将 JSON 解析为散列数组以供模板引擎使用(查看架构)。
  • 将文件输出到您选择的目录中(假设它是可写的)。
  • 可以开启/关闭生成单元测试。
  • 可选地设置命名空间。
  • 设置回调以操作生成的源代码输出。

使用默认 PHP 模板

  • 将转换为 PHP,将字段转换为具有获取器和设置器的属性(流畅风格)。
  • 可选地为 PHP 7 函数签名设置标量类型提示。示例
    /**
     * @var int
     */
    private $client;
    
    /**
     * Get ClientId.
     *
     * @param int $ClientId
     * @return $this;
     */
    public function setClientId(int $ClientId)
    {
        $this->ClientId = $ClientId; 
    }

副作用

使用此工具时需要注意的一些事项包括

  • 像 "$,-" 这样的坏字符将自动从 JSON 文件中的键中删除。
  • 字段是一个数组且其第一个元素是对象时,将生成一个类。
  • 找到的所有对象都将生成一个类文件,包含该对象的键将用作名称。
  • 将为嵌套对象生成命名空间以防止类名冲突。

以下是它处理 JSON 类型的简要说明

安装

Composer.json

composer require --dev kshabazz/json-to-src

- or -

{
  "require": {
    "kshabazz/json-to-src": "^1.0"
  }
}

Shell 或命令行

composer.phar require --dev kshabazz/json-to-src

模板数据架构

这是传递给模板引擎渲染方法的数组

$renderData = [
    "className" => Company
    "classProperties" => [
        [
            "name" => company
            "type" => string
            "isCustomType" => 
            "paramType" => string
            "value" => Kohirens
            "arrayType" => 
        ],
        [
            "name" => employees
            "type" => array
            "isCustomType" => 
            "paramType" => array
            "value" => ""
            "arrayType" => employees
        ],
        [
            "name" => location
            "type" => Location
            "isCustomType" => 1
            "paramType" => Location
            "value" => stdClass Object
                (
                    "type" => Point
                    "coordinates" => Array
                        (
                            [0" => -83.0466419
                            [1" => 42.3323378
                        )

                    "city" => Detroit
                    "state" => MI
                    "zip_code" => 48226
                )

            "arrayType" => 
        ],
        [
            "name" => categories
            "type" => array
            "isCustomType" => 
            "paramType" => array
            "value" => []
            "arrayType" => categories
        ]
    ],
    "classNamespace" => Tests
];

设置回调

您还可以设置一个回调,该回调将接收渲染数据,以控制类名、命名空间等。以下是一个示例。

回调脚本:preRenderCallback.php

return function (array $renderData, $isUnitTest) {
    if (!$isUnitTest) {
        $renderData['classNamespace'] .= '\\Bar';
    }
    
    return $renderData;
};

将 preRenderCallback.php 传递给命令行脚本

jsontosrc -n Tests -c preRenderCallback.php company.json Company tmp

命令行

"jsontosrc" 命令行脚本接受多个参数和选项。

-n 使用字符串作为命名空间。 -u 输出单元测试的单独目录。 -a 设置属性访问,默认为 "private"。 -c 在渲染前修改模板数据的回调函数。 -r 控制嵌套对象的深度,默认为 20。 -p 可选字符串作为命名空间前缀。 -v 在输出中添加调试消息。 -t 开启 PHP 7 类型提示。