kshabazz / json-to-src
将 JSON 文件转换为源代码的程序。
0.0.1
2017-03-01 22:39 UTC
Requires
- php: >=5.5
- twig/twig: ^1.0
- ulrichsg/getopt-php: ^2.0
Requires (Dev)
- phpunit/phpunit: >=4.0
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 类型提示。