本文整理汇总了PHP中PHP_CodeSniffer_File::removeTokenListener方法的典型用法代码示例。如果您正苦于以下问题:PHP PHP_CodeSniffer_File::removeTokenListener方法的具体用法?PHP PHP_CodeSniffer_File::removeTokenListener怎么用?PHP PHP_CodeSniffer_File::removeTokenListener使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PHP_CodeSniffer_File
的用法示例。
在下文中一共展示了PHP_CodeSniffer_File::removeTokenListener方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: process
/**
* Processes this test, when one of its tokens is encountered.
*
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
* @param int $stackPtr The position of the current token
* in the stack passed in $tokens.
*
* @return void
*/
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
{
$groups = $this->getGroups();
if (empty($groups)) {
$phpcsFile->removeTokenListener($this, $this->register());
return;
}
$tokens = $phpcsFile->getTokens();
$token = $tokens[$stackPtr];
$exclude = explode(',', $this->exclude);
if (in_array($token['code'], array(T_CLOSE_SQUARE_BRACKET))) {
$equal = $phpcsFile->findNext(T_WHITESPACE, $stackPtr + 1, null, true);
if ($tokens[$equal]['code'] !== T_EQUAL) {
return;
// This is not an assignment!
}
}
// Instances: Multi-dimensional array, keyed by line
$inst = array();
// $foo = array( 'bar' => 'taz' );
// $foo['bar'] = $taz;
if (in_array($token['code'], array(T_CLOSE_SQUARE_BRACKET, T_DOUBLE_ARROW))) {
if ($token['code'] == T_CLOSE_SQUARE_BRACKET) {
$operator = $phpcsFile->findNext(array(T_EQUAL), $stackPtr + 1);
} elseif ($token['code'] == T_DOUBLE_ARROW) {
$operator = $stackPtr;
}
$keyIdx = $phpcsFile->findPrevious(array(T_WHITESPACE, T_CLOSE_SQUARE_BRACKET), $operator - 1, null, true);
if (!is_numeric($tokens[$keyIdx]['content'])) {
$key = trim($tokens[$keyIdx]['content'], '\'"');
$valStart = $phpcsFile->findNext(array(T_WHITESPACE), $operator + 1, null, true);
$valEnd = $phpcsFile->findNext(array(T_COMMA, T_SEMICOLON), $valStart + 1, null, false, null, true);
$val = $phpcsFile->getTokensAsString($valStart, $valEnd - $valStart);
$val = trim($val, '\'"');
$inst[$key][] = array($val, $token['line']);
}
} elseif (in_array($token['code'], array(T_CONSTANT_ENCAPSED_STRING, T_DOUBLE_QUOTED_STRING))) {
if (preg_match_all('#[\'"&]([a-z_]+)=([^\'"&]*)#i', $token['content'], $matches) <= 0) {
return;
// No assignments here, nothing to check
}
foreach ($matches[1] as $i => $_k) {
$inst[$_k][] = array($matches[2][$i], $token['line']);
}
}
if (empty($inst)) {
return;
}
foreach ($groups as $groupName => $group) {
if (in_array($groupName, $exclude)) {
continue;
}
$callback = isset($group['callback']) && is_callable($group['callback']) ? $group['callback'] : array($this, 'callback');
foreach ($inst as $key => $assignments) {
foreach ($assignments as $occurance) {
list($val, $line) = $occurance;
if (!in_array($key, $group['keys'])) {
continue;
}
$output = call_user_func($callback, $key, $val, $line, $group);
if ($output === false || $output === null) {
continue;
} elseif ($output === true) {
$message = $group['message'];
} else {
$message = $output;
}
if ($group['type'] == 'warning') {
$addWhat = array($phpcsFile, 'addWarning');
} else {
$addWhat = array($phpcsFile, 'addError');
}
call_user_func($addWhat, $message, $stackPtr, $groupName, array($key, $val));
}
}
// return; // Show one error only
}
}