如何声明某个函数死亡,以致PhpStorm可以检测到该函数?

时间:2018-09-19 19:00:51

标签: phpstorm phpdoc

背景

我使用一些辅助函数来停止程序流并返回数据。例如,尽管大多数页面都是HTML,但我偶尔会返回JSON并调用

/**
 * @param array|bool $response
 *
 * @die
 */
function jsonResponseDie($response)
{
  header('Content-Type: application/json');
  echo json_encode($response);
  die();
}

问题

但是,调用函数不会检测到存在die语句,并允许在其后出现代码而不会发出警告。

function recievePush()
{
  // Process a push request and respond with a json array.

  jsonResponseDie(array('status' => TRUE));
  echo 'This will never execute but PhpStorm doesn\'t know that';
}

问题

如何让PhpStorm检测到该功能将消失?

我确实尝试了一些项目“ @return die”或“ @die”,但似乎无法识别。我还查看了一些文档here,但发现没有任何用处。

2 个答案:

答案 0 :(得分:3)

PHPDoc中没有针对此类内容的特殊标签。

PhpStorm对此还没有任何解决方案。

https://youtrack.jetbrains.com/issue/WI-10673-观看此票(星号/票/评论)以获取任何进展的通知。

答案 1 :(得分:0)

我有一个CodeIgniter 3.1.11项目,我想在我的SendJsonResponseAndDie()文件中的myproject/ci/application/helpers/format_helper.php方法上实现exitPoint。

对我来说,解决方案很简单,就是在meta中创建一个myproject目录,然后创建一个包含以下内容的.phpstorm.meta.php文件:

myproject / meta / .phpstorm.meta.php

<?php

namespace PHPSTORM_META {

    function exitPoint($functionReference) {
        return "exitPoint " . $functionReference;
    }

    exitPoint(\SendJsonResponseAndDie());
}

嘿,只要我将鼠标悬停在项目中任何位置的函数调用之后的代码上,就会出现“无法到达的语句”文本。

不过,我希望无法到达的代码行将变暗,这样我就可以直观地看到问题所在,而无需进行悬停事件。

@LazyOne的答案中未提及的其他一些阅读内容:https://github.com/JetBrains/phpstorm-stubs/blob/master/meta/.phpstorm.meta.php