我在 PHP_CodeSniffer 中编写了一个 Sniff 来检查类名,我的抽象类名与非抽象类有一些不同的命名要求。
如何确定当前 Sniff 是否正在嗅探抽象类?
我在 PHP_CodeSniffer 中编写了一个 Sniff 来检查类名,我的抽象类名与非抽象类有一些不同的命名要求。
如何确定当前 Sniff 是否正在嗅探抽象类?
感谢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
的final
您还需要在课程中使用以下代码,以使上述代码正常工作:
$tokens = $phpcsFile->getTokens();
我已经测试了上面的代码,它就像我在这个答案中概述的那样工作。
由于目前互联网上有关 PHP_CodeSniffer 的信息有限,希望这对其他人有所帮助。
随意建议编辑或编辑此答案。