91 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Squiz_Sniffs_Operators_ValidLogicalOperatorsSniff.
 | 
						|
 *
 | 
						|
 * PHP version 5
 | 
						|
 *
 | 
						|
 * @category  PHP
 | 
						|
 * @package   PHP_CodeSniffer
 | 
						|
 * @author    Greg Sherwood <gsherwood@squiz.net>
 | 
						|
 * @author    Marc McIntyre <mmcintyre@squiz.net>
 | 
						|
 * @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600)
 | 
						|
 * @license   http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
 | 
						|
 * @link      http://pear.php.net/package/PHP_CodeSniffer
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Squiz_Sniffs_Operators_ValidLogicalOperatorsSniff.
 | 
						|
 *
 | 
						|
 * Checks to ensure that the logical operators 'AND' and 'OR' ARE not used.
 | 
						|
 *
 | 
						|
 * @category  PHP
 | 
						|
 * @package   PHP_CodeSniffer
 | 
						|
 * @author    Greg Sherwood <gsherwood@squiz.net>
 | 
						|
 * @author    Marc McIntyre <mmcintyre@squiz.net>
 | 
						|
 * @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600)
 | 
						|
 * @license   http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
 | 
						|
 * @version   Release: 1.3.6
 | 
						|
 * @link      http://pear.php.net/package/PHP_CodeSniffer
 | 
						|
 */
 | 
						|
class TTCodeStandard_Sniffs_Operators_ValidLogicalOperatorsSniff implements PHP_CodeSniffer_Sniff
 | 
						|
{
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns an array of tokens this test wants to listen for.
 | 
						|
     *
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function register()
 | 
						|
    {
 | 
						|
        return array(
 | 
						|
                T_LOGICAL_AND,
 | 
						|
                T_LOGICAL_OR,
 | 
						|
                T_LOGICAL_XOR,
 | 
						|
                T_BOOLEAN_AND,
 | 
						|
                T_BOOLEAN_OR,
 | 
						|
               );
 | 
						|
 | 
						|
    }//end register()
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * Processes this test, when one of its tokens is encountered.
 | 
						|
     *
 | 
						|
     * @param PHP_CodeSniffer_File $phpcsFile The current 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();
 | 
						|
 | 
						|
        $replacements = array(
 | 
						|
						'&&' => 'AND',
 | 
						|
						'||'  => 'OR',
 | 
						|
						'and' => 'AND',
 | 
						|
						'or' => 'OR',
 | 
						|
                         //'xor' => '^',
 | 
						|
                        );
 | 
						|
 | 
						|
        $operator = $tokens[$stackPtr]['content'];
 | 
						|
        if (isset($replacements[$operator]) === false) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $error = 'Logical operator "%s" is prohibited; use "%s" instead';
 | 
						|
        $data  = array(
 | 
						|
                  $operator,
 | 
						|
                  $replacements[$operator],
 | 
						|
                 );
 | 
						|
        $phpcsFile->addError($error, $stackPtr, 'NotAllowed', $data);
 | 
						|
 | 
						|
    }//end process()
 | 
						|
 | 
						|
 | 
						|
}//end class
 | 
						|
 | 
						|
?>
 |