确定PHP_CodeSniffer是否正在嗅探抽象(或最终)类

时间:2015-03-09 20:50:37

标签: php phpcodesniffer

我在PHP_CodeSniffer中编写了一个用于检查类名的Sniff,而我的抽象类名对非抽象类有一些不同的命名要求。

如何确定当前的Sniff是否正在嗅探抽象类?

1 个答案:

答案 0 :(得分:1)

感谢zerkms让我指向正确的方向。

要检查当前Sniff是否正在读取abstractfinal类,请使用以下代码:

if (in_array(
  $tokens[($stackPtr - 2)]['code'], 
  array(T_ABSTRACT, T_FINAL)
) === true 
) {
  // TRUE - class is abstract or final
} else {
  // FALSE - class is NOT abstract or final
}

删除T_ABSTRACT T_FINAL会删除该类型的检查。

即。如果没有上面代码中的T_ABSTRACT,它将为abstract类返回FALSE,对于final类仍然为TRUE。

您还需要在课程中使用以下代码,以便上述代码能够正常工作:

$tokens = $phpcsFile->getTokens();

我已经测试了上面的代码,它的工作原理如我在这个答案中所概述的那样 由于PHP_CodeSniffer目前在互联网上的信息有限,希望这将有助于其他人。

随意建议编辑或编辑此答案。

相关问题