Viewing file: FunctionCallSignatureSniff.php (4.36 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * PEAR_Sniffs_Functions_FunctionCallSignatureSniff. * * PHP version 5 * * @category PHP * @package PHP_CodeSniffer * @author Greg Sherwood <gsherwood@squiz.net> * @author Marc McIntyre <mmcintyre@squiz.net> * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version CVS: $Id: FunctionCallSignatureSniff.php,v 1.5 2007/07/23 01:47:53 squiz Exp $ * @link http://pear.php.net/package/PHP_CodeSniffer */
/** * PEAR_Sniffs_Functions_FunctionCallSignatureSniff. * * @category PHP * @package PHP_CodeSniffer * @author Greg Sherwood <gsherwood@squiz.net> * @author Marc McIntyre <mmcintyre@squiz.net> * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version Release: 1.1.0 * @link http://pear.php.net/package/PHP_CodeSniffer */ class Toba_Sniffs_Functions_FunctionCallSignatureSniff implements PHP_CodeSniffer_Sniff {
/** * Returns an array of tokens this test wants to listen for. * * @return array */ public function register() { return array(T_STRING);
}//end register()
/** * 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) { $tokens = $phpcsFile->getTokens();
// Find the next non-empty token. $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr + 1), null, true);
if ($tokens[$next]['code'] !== T_OPEN_PARENTHESIS) { // Not a function call. return; }
if (isset($tokens[$next]['parenthesis_closer']) === false) { // Not a function call. return; }
// Find the previous non-empty token. $previous = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 1), null, true); if ($tokens[$previous]['code'] === T_FUNCTION) { // It's a function definition, not a function call. return; }
if ($tokens[$previous]['code'] === T_NEW) { // We are creating an object, not calling a function. return; }
if (($stackPtr + 1) !== $next) { // Checking this: $value = my_function[*](...). $error = '[Funciones#invocacion] Space before opening parenthesis of function call prohibited'; $phpcsFile->addError($error, $stackPtr); }
if ($tokens[($next + 1)]['code'] === T_WHITESPACE) { // Checking this: $value = my_function([*]...). $error = '[Funciones#invocacion] Space after opening parenthesis of function call prohibited'; $phpcsFile->addError($error, $stackPtr); }
$closer = $tokens[$next]['parenthesis_closer'];
if ($tokens[($closer - 1)]['code'] === T_WHITESPACE) { // Checking this: $value = my_function(...[*]). $between = $phpcsFile->findNext(T_WHITESPACE, ($next + 1), null, true);
// Only throw an error if there is some content between the parenthesis. // IE. Checking for this: $value = my_function(). // If there is no content, then we would have thrown an error in the // previous IF statement because it would look like this: // $value = my_function( ). if ($between !== $closer) { $error = '[Funciones#invocacion] Space before closing parenthesis of function call prohibited'; $phpcsFile->addError($error, $closer); } }
$next = $phpcsFile->findNext(T_WHITESPACE, ($closer + 1), null, true);
if ($tokens[$next]['code'] === T_SEMICOLON) { if (in_array($tokens[($closer + 1)]['code'], PHP_CodeSniffer_Tokens::$emptyTokens) === true) { $error = '[Funciones#invocacion] Space after closing parenthesis of function call prohibited'; $phpcsFile->addError($error, $closer); } }
}//end process()
}//end class ?>
|