linusshops / magicdoc
自动从JSON文档生成magic方法phpdoc
Requires
- php: >=5.5.0
- ext-json: *
- guzzlehttp/guzzle: ^6.1.1
- symfony/console: ~2.7
This package is not auto-updated.
Last update: 2022-05-11 12:57:50 UTC
README
Magicdoc会自动从JSON文档生成已知的magic方法选项的@method文档。将扫描JSON文件的顶层元素,并用于在目标类文件中创建@method行。
动机
当连接到外部API时,它会返回一个具有许多属性的JSON文档。由于API有许多端点,并且有许多可能的返回属性,逐个具体实现每个属性并不是一个好的时间利用方式。
因此,使用__call魔法方法采用了这种方法。将JSON文档读入内部数组,并实现__call方法以查看调用的方法名称和提供的任何参数以找到所需的属性。通过使用魔法方法而不是对象属性,可以在不使用中间变量或循环的情况下深入JSON文档。
这解决了许多可能的可用属性,并且通过Magicdoc实现了对它们进行IDE提示的问题。
配置
Magicdoc期望一个magicdoc.json文件。此文件应该是一个对象数组,每个对象代表一个JSON文档和它将被映射到的类。
[
{
"source":"example.json",
"destination":"src/LinusShops/ExampleClass.php",
"types" : {
"items" : "Item[]"
},
"parameters" : {
"items" : "$parameter1, $parameter2"
}
}
]
source
: 必需的,指定要映射的JSON文件的位置
destination
: 必需的,目标类的位置
types
: 可选的,允许指定某些元素的类型。Magicdoc将推断基本类型(字符串、布尔值、整数),但这也允许指定对象。
parameters
: 可选的,允许指定参数列表。Magicdoc将默认为标准可变参数(...$parameters)
最后,目标类必须在您希望@method列表出现的位置添加{{magicdoc_start}}和{{magicdoc_end}}标签。通常,这是在类注释中。
URL配置
Magicdoc也可以直接从您的API读取。
[
{
"source":{
"type": "url",
"url": "http://example.com/endpoint",
"headers": {
"Authorization": "Some token",
"Content-Type":"application/json"
},
"body":"{\"option\":\"hello\"}",
"method":"POST"
},
"destination":"src/LinusShops/Example.php",
"options":{
"bust_wrapper_array":true
}
}
]
source
: 指定传递给API请求的选项。以下选项不是必需的-标题、主体、方法(默认为GET)。
options
: 指定对接收到的JSON采取的操作,主要是预处理
options=>bust_wrapper_array
: 如果您的API在返回的对象中包装数组,您可以设置此选项以将数组中的第一个对象弹出以用于文档生成。
Magento模型IDE助手
Magicdoc还可以为Magento模型中的magic获取器/设置器生成IDE助手。
{
"source":{
"type": "magento",
"model": "linus_example/product",
"id": 1
}
}
Magicdoc期望magicdoc.json文件位于您的magento安装的根目录中。
提供的ID应该是模型的有效实例,因为Magicdoc将检查包含的数据类型以确定准确的返回类型。然后,它将生成一个__mage_ide_helper.php
文件,该文件应放置在您的magento项目根目录中。
用法
从包含您的 magicdoc.json 文件的目录中运行 magicdoc
。
##许可证 MIT