确定 PHP_CodeSniffer 是否正在嗅探摘要(或最终)class
Identify if PHP_CodeSniffer is Sniffing an abstract (or final) class
我正在 PHP_CodeSniffer 中编写 Sniff 以检查 class 名称,我的抽象 class 名称与非抽象 classes 有一些不同的命名要求.
如何确定当前 Sniff 是否正在嗅探摘要 class?
感谢 zerkms 为我指明了正确的方向。
要检查当前 Sniff 是否正在读取 abstract
或 final
class,请使用以下代码:
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
class 会 return FALSE,final
class 仍然是 TRUE。
您还需要 class 中的以下代码才能使上述代码正常工作:
$tokens = $phpcsFile->getTokens();
我已经测试了上面的代码,它按照我在这个答案中概述的那样工作。
由于 PHP_CodeSniffer 目前互联网上的信息有限,希望这对其他人有所帮助。
随时提出修改建议或修改此答案。
我正在 PHP_CodeSniffer 中编写 Sniff 以检查 class 名称,我的抽象 class 名称与非抽象 classes 有一些不同的命名要求.
如何确定当前 Sniff 是否正在嗅探摘要 class?
感谢 zerkms 为我指明了正确的方向。
要检查当前 Sniff 是否正在读取 abstract
或 final
class,请使用以下代码:
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
class 会 return FALSE,final
class 仍然是 TRUE。
您还需要 class 中的以下代码才能使上述代码正常工作:
$tokens = $phpcsFile->getTokens();
我已经测试了上面的代码,它按照我在这个答案中概述的那样工作。
由于 PHP_CodeSniffer 目前互联网上的信息有限,希望这对其他人有所帮助。
随时提出修改建议或修改此答案。