如果运行与-vv
命令行参数phpcs,你可以看到PHP文件被分成一列记号。对于像Firebug::error();
行您可以:
Process token 1 on line 2 [lvl:0;]: T_STRING => Firebug
Process token 2 on line 2 [lvl:0;]: T_DOUBLE_COLON => ::
Process token 3 on line 2 [lvl:0;]: T_STRING => error
Process token 4 on line 2 [lvl:0;]: T_OPEN_PARENTHESIS => (
Process token 5 on line 2 [lvl:0;]: T_CLOSE_PARENTHESIS =>)
Process token 6 on line 2 [lvl:0;]: T_SEMICOLON => ;
你不显示你的整个嗤之以鼻,但我相信你正在寻找T_STRING令牌。在这种情况下,一旦你确定$ stackPtr所指向的“萤火虫”刺痛,只是确认它是一个静态的呼叫,然后抓住下一个字符串标记:
if ($tokens[$stackPtr]['content'] === 'Firebug'
&& $tokens[($stackPtr + 1)]['code'] === T_DOUBLE_COLON
) {
// This is a static call to a Firebug class method.
$methodName = $tokens[($stackPtr + 2)]['content'];
/* your error code here */
}
或者,如果你认为人是要把双冒号之间的空间,像Firebug :: error()
那么你可以做这样的事情:
if ($tokens[$stackPtr]['content'] === 'Firebug') {
// Find the next non-whitespace token.
$colon = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr + 1), null, true);
if ($tokens[$colon]['code'] === T_DOUBLE_COLON) {
// This is a static call to a Firebug class method.
$methodName = $phpcsFile->findNext(T_STRING, ($colon + 1));
/* your error code here */
}
}
如果你想更进一步,你可以查找T_OPEN_PARENTHESIS和T_CLOSE_PARENTHESIS令牌为好,以确认是一个函数调用,但它取决于您正在使用的类。
希望有所帮助。