我在PHP_CodeSniffer中编写了一个用于检查类名的Sniff,而我的抽象类名对非抽象类有一些不同的命名要求。
如何确定当前的Sniff是否正在嗅探抽象类?
答案 0 :(得分:1)
感谢zerkms让我指向正确的方向。
要检查当前Sniff是否正在读取abstract
或final
类,请使用以下代码:
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目前在互联网上的信息有限,希望这将有助于其他人。
随意建议编辑或编辑此答案。