1 <?php
2 /**
3  * Squiz_Sniffs_ControlStructures_LowercaseDeclarationSniff.
4  *
5  * PHP version 5
6  *
7  * @category  PHP
8  * @package   PHP_CodeSniffer
9  * @author    Greg Sherwood <gsherwood@squiz.net>
10  * @author    Marc McIntyre <mmcintyre@squiz.net>
11  * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
12  * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
13  * @link      http://pear.php.net/package/PHP_CodeSniffer
14  */
15 
16 /**
17  * Squiz_Sniffs_ControlStructures_LowercaseDeclarationSniff.
18  *
19  * Ensures all control structure keywords are lowercase.
20  *
21  * @category  PHP
22  * @package   PHP_CodeSniffer
23  * @author    Greg Sherwood <gsherwood@squiz.net>
24  * @author    Marc McIntyre <mmcintyre@squiz.net>
25  * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
26  * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
27  * @version   Release: @package_version@
28  * @link      http://pear.php.net/package/PHP_CodeSniffer
29  */
30 class Squiz_Sniffs_ControlStructures_LowercaseDeclarationSniff implements PHP_CodeSniffer_Sniff
31 {
32 
33 
34     /**
35      * Returns an array of tokens this test wants to listen for.
36      *
37      * @return array
38      */
39     public function register()
40     {
41         return array(
42                 T_IF,
43                 T_ELSE,
44                 T_ELSEIF,
45                 T_FOREACH,
46                 T_FOR,
47                 T_DO,
48                 T_SWITCH,
49                 T_WHILE,
50                 T_TRY,
51                 T_CATCH,
52                );
53 
54     }//end register()
55 
56 
57     /**
58      * Processes this test, when one of its tokens is encountered.
59      *
60      * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
61      * @param int                  $stackPtr  The position of the current token in
62      *                                        the stack passed in $tokens.
63      *
64      * @return void
65      */
66     public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
67     {
68         $tokens = $phpcsFile->getTokens();
69 
70         $content = $tokens[$stackPtr]['content'];
71         if ($content !== strtolower($content)) {
72             $error = '%s keyword must be lowercase; expected "%s" but found "%s"';
73             $data  = array(
74                       strtoupper($content),
75                       strtolower($content),
76                       $content,
77                      );
78 
79             $fix = $phpcsFile->addFixableError($error, $stackPtr, 'FoundUppercase', $data);
80             if ($fix === true) {
81                 $phpcsFile->fixer->replaceToken($stackPtr, strtolower($content));
82             }
83         }
84 
85     }//end process()
86 
87 
88 }//end class
89