PHPDoc - 函数退出

6

有没有办法记录某个函数调用了 exit()

使用场景是我们有一个负责处理重定向的函数(检查是否已发送头部,设置响应代码等),然后关键地调用了exit()。不幸的是,PHPStorm不知道这个特定的函数终止执行,因此建议进一步警告,就好像这个函数已经返回了一样,但实际上它永远不会返回。


我写了一个回答另一个(不同的)问题,在那里我解释了为什么我认为你应该使用异常而不是header/die:https://dev59.com/questions/tVrUa4cB1Zd3GeqPjFsM#23855247 - jornane
@jornane 对我来说,除了在异常情况下引发异常之外,任何其他情况下引发异常的想法都几乎是一种反模式。你关于它允许运行清理代码的论点同样可以使用重定向方法实现。 - Rob Forrest
2个回答

4
目前还不可能。 https://youtrack.jetbrains.com/issue/WI-10673 -- 观察这个问题(点赞/投票/评论),以便获得进展通知。

目前,我只能建议在这样的函数调用之后放置明确的die()exit()调用。


这就是我想要的。我喜欢@noreturn的想法。 - Rob Forrest

2

我知道这个方法已经过时了,但是现在你可以在PHPDoc中使用@return never来描述调用die()或exit()的函数或方法:

/**
 * @return never
 */
function dead_inside(): void
{
    die();
}

不幸的是,这个信息不会传递到调用栈,因此您必须为每个调用了一个调用了一个调用了 die()exit() 的函数添加 @return nevervoid 返回定义。 - Alexey Yashin
注意:您必须定义一个void返回类型和@return never PHPDoc,否则PHPStorm将在您的dead_inside()函数调用下方显示“不可达语句”警告。 - Alexey Yashin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接