linusshops/magicdoc

此包已被废弃,不再维护。未建议替代包。

自动从JSON文档生成magic方法phpdoc

0.3.6 2016-10-25 19:33 UTC

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