文档错误标记

时间:2012-03-19 15:11:05

标签: php documentation phpdoc

我在类中有一个触发错误的方法。

/**
 * Get info
 * @return string|FALSE Info
 */
public function getInfo()
{
    if ($this->info) {
        return $this->info;
    }

    trigger_error('Missing info', E_USER_WARNING);
    return FALSE;
}

我不想在这里抛出异常,因为我真的想/需要这段代码继续运行。在其他地方,我记录了这个错误,并且记录错误超出了这个类的范围。

但我如何记录这个?对于例外,我会使用:

/**
 * @throws Exception
 */

是否有类似的错误?我真的希望其他开发人员能够轻松地知道我的代码中发生了什么。

2 个答案:

答案 0 :(得分:1)

错误没有phpdoc标记。

trigger_error()返回bool,因此您的方法不会返回或抛出任何内容。除非您的错误处理程序阻止执行,否则将继续执行,因此使用@return或@throws会滥用它们,并且可能会让任何阅读代码的人感到困惑。


我会采用不同的方法。

我就是这样做的:

/**
 * Has info
 *
 * @return bool Whether info is available
 */
public function hasInfo()
{
    return (bool) $this->info; // or use isset() or whatever you need
}

/**
 * Get info
 *
 * @throws Exception
 * @return string The info string
 */
public function getInfo()
{
    if (! $this->hasInfo()) {
        throw new Exception('Missing info');
    }

    return $this->info;
}

然后从您的其他代码中,您可以执行以下操作:

if ($object->hasInfo()) {
    $info = $object->getInfo();
} else {
    // no info!
}

我还会在代码库的根目录中捕获异常:

try {
    MyApp::run();
}
catch(Exception $e) {
    // handle error, eg. display fatal error message
}

答案 1 :(得分:0)

我同意其他人的意见,我会在这里改变我的编码方法,但解决你的直接问题 - 我可能会使用@internal标签来解释你希望开发人员意识到的事情的。当然,当您针对此代码运行phpDocumentor时,除非您使用--parse-private运行时选项,否则@internal标签将不会出现在您生成的文档中...这是因为内部信息for devs被假定为关闭限制消费者/ API感兴趣的读者,就像“@access private”项目一样。