1+ <?php
2+ class HDNETBlack_Sniffs_WhiteSpace_ObjectOperatorSpacingSniff implements PHP_CodeSniffer_Sniff
3+ {
4+
5+ /**
6+ * Returns an array of tokens this test wants to listen for.
7+ *
8+ * @return array
9+ */
10+ public function register ()
11+ {
12+ return array (T_OBJECT_OPERATOR );
13+ }
14+
15+ /**
16+ * Processes this test, when one of its tokens is encountered.
17+ *
18+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
19+ * @param int $stackPtr The position of the current token
20+ * in the stack passed in $tokens.
21+ *
22+ * @return void
23+ */
24+ public function process (PHP_CodeSniffer_File $ phpcsFile , $ stackPtr )
25+ {
26+ $ tokens = $ phpcsFile ->getTokens ();
27+ if ($ tokens [($ stackPtr - 1 )]['code ' ] !== T_WHITESPACE ) {
28+ $ before = 0 ;
29+ } else {
30+ if ($ tokens [($ stackPtr - 2 )]['line ' ] !== $ tokens [$ stackPtr ]['line ' ]) {
31+ $ before = 'newline ' ;
32+ } else {
33+ $ before = $ tokens [($ stackPtr - 1 )]['length ' ];
34+ }
35+ }
36+
37+ if ($ tokens [($ stackPtr + 1 )]['code ' ] !== T_WHITESPACE ) {
38+ $ after = 0 ;
39+ } else {
40+ if ($ tokens [($ stackPtr + 2 )]['line ' ] !== $ tokens [$ stackPtr ]['line ' ]) {
41+ $ after = 'newline ' ;
42+ } else {
43+ $ after = $ tokens [($ stackPtr + 1 )]['length ' ];
44+ }
45+ }
46+
47+ $ phpcsFile ->recordMetric ($ stackPtr , 'Spacing before object operator ' , $ before );
48+ $ phpcsFile ->recordMetric ($ stackPtr , 'Spacing after object operator ' , $ after );
49+
50+ if ($ before !== 0 && $ before !== 'newline ' ) {
51+ $ error = 'Space found before object operator ' ;
52+ $ fix = $ phpcsFile ->addFixableError ($ error , $ stackPtr , 'Before ' );
53+ if ($ fix === true ) {
54+ $ phpcsFile ->fixer ->replaceToken (($ stackPtr - 1 ), '' );
55+ }
56+ }
57+
58+ if ($ after !== 0 ) {
59+ $ error = 'Space found after object operator ' ;
60+ $ fix = $ phpcsFile ->addFixableError ($ error , $ stackPtr , 'After ' );
61+ if ($ fix === true ) {
62+ $ phpcsFile ->fixer ->replaceToken (($ stackPtr + 1 ), '' );
63+ }
64+ }
65+
66+ }
67+
68+ }
0 commit comments