3
* Zend_Sniffs_Files_ClosingTagsSniff.
8
* @package PHP_CodeSniffer
9
* @author Greg Sherwood <gsherwood@squiz.net>
10
* @author Marc McIntyre <mmcintyre@squiz.net>
11
* @copyright 2006-2012 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
17
* Zend_Sniffs_Files_LineEndingsSniff.
19
* Checks that the file does not end with a closing tag.
22
* @package PHP_CodeSniffer
23
* @author Greg Sherwood <gsherwood@squiz.net>
24
* @author Marc McIntyre <mmcintyre@squiz.net>
25
* @copyright 2006-2012 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: 1.5.0RC2
28
* @link http://pear.php.net/package/PHP_CodeSniffer
30
class Zend_Sniffs_Files_ClosingTagSniff implements PHP_CodeSniffer_Sniff
35
* Returns an array of tokens this test wants to listen for.
39
public function register()
41
return array(T_CLOSE_TAG);
47
* Processes this sniff, when one of its tokens is encountered.
49
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
50
* @param int $stackPtr The position of the current token in
51
* the stack passed in $tokens.
55
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
57
$tokens = $phpcsFile->getTokens();
59
$next = $phpcsFile->findNext(T_INLINE_HTML, ($stackPtr + 1), null, true);
60
if ($next !== false) {
64
// We've found the last closing tag in the file so the only thing
65
// potentially remaining is inline HTML. Now we need to figure out
66
// whether or not it's just a bunch of whitespace.
68
for ($i = ($stackPtr + 1); $i < $phpcsFile->numTokens; $i++) {
69
$content .= $tokens[$i]['content'];
72
// Check if the remaining inline HTML is just whitespace.
73
$content = trim($content);
74
if (empty($content) === true) {
75
$error = 'A closing tag is not permitted at the end of a PHP file';
76
$phpcsFile->addError($error, $stackPtr, 'NotAllowed');