自动生成“JSON模式文档”

时间:2013-01-15 21:32:59

标签: php documentation automation

所以,我在开发PHP应用程序时使用了很多JSON。函数返回json字符串或者很难知道它们包含什么内容,并且将文档保持最新是非常耗时的,特别是如果它发生了很大的变化。

实现这样的事情会是个好主意:

而不是使用return $x我会实现一个名为_return的函数,它会像:{/ p>

function _return($obj)
{
    var_dump(debug_backtrace());
    return $obj;
}

它会做更多的事情,它会在堆栈跟踪中查找函数的名称,然后我可以将此代码保存为$ obj类型到适当的文件,并且它们可以用于创建自动更新文档!

这会是一个好主意吗?在每次返回时执行debug_backtrace()可能会耗费时间吗?

我会像:

一样使用它
class T
{
    public function __constructor()
    {
    }

    public function first()
    {
        return $this->second();
    }

    public function second()
    {
        $array = array('david' => 'value', 'test' => 'oj');
        return _return($array);
    }

}

function _return($obj)
{
    var_dump(debug_backtrace());
    return $obj;
}

$t = new T();
$t->first();

1 个答案:

答案 0 :(得分:0)

您的代码有几个缺点。

首先,回溯可以变得巨大 - 这就是函数debug_print_backtrace()的原因。如果接近内存限制,则将回溯推送到随后被转储的变量可以取消该脚本。

第二句:一句话:为什么不在你的“第一”方法中_return

第三:如果你有var_dump的东西,你将销毁任何可能被最近的javascript库使用和解析的JSON输出。

第四:如果你不知道当你收到某个URL的请求时会调用哪些函数,那么文档就不应该受到责备,但是从URL到执行函数的非显而易见的映射系统是不可能的

第五:调试日志记录。

第六:输出清理(它是输入验证的对应物)。

第七:有类似JSON Schema验证的东西。例如,请查看http://davidwalsh.name/json-validation。这通过定义数据结构来反过来,但如果您可以将现实与目标结果进行比较并检测任何差异,至少您知道在哪里更新某些内容。