2

所以,我在开发 PHP 应用程序时使用了很多 JSON。并且一个函数返回 json 字符串或任何很难知道它们包含什么的东西,并且保持文档更新非常耗时,尤其是在它发生很大变化的情况下。

实现这样的东西是个好主意吗:

而不是使用return $x我会实现一个名为的函数_return,它类似于:

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();
4

1 回答 1

0

您的代码有几个缺点。

首先,回溯可以变得巨大——这就是函数存在的原因debug_print_backtrace()。如果您接近内存限制,则将回溯推入一个变量然后被转储可以取消脚本。

第二:备注:你为什么不在你_return的“第一个”方法中?

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

第四:如果您不知道当您收到对某个 URL 的请求时调用了哪些函数,则不应归咎于文档,而应归咎于从 URL 到已执行函数的非明显映射系统。

第五:调试日志记录。

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

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

于 2013-01-15T21:46:07.747 回答