1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* CodeIgniter_Sniffs_Files_AbstractClosingCommentSniff. |
4
|
|
|
* |
5
|
|
|
* PHP version 5 |
6
|
|
|
* |
7
|
|
|
* @category PHP |
8
|
|
|
* @package PHP_CodeSniffer |
9
|
|
|
* @author Thomas Ernest <[email protected]> |
10
|
|
|
* @copyright 2006 Thomas Ernest |
11
|
|
|
* @license http://thomas.ernest.fr/developement/php_cs/licence GNU General Public License |
12
|
|
|
* @link http://pear.php.net/package/PHP_CodeSniffer |
13
|
|
|
*/ |
14
|
|
|
|
15
|
|
|
/** |
16
|
|
|
* CodeIgniter_Sniffs_Files_AbstractClosingCommentSniff. |
17
|
|
|
* |
18
|
|
|
* Defines some methods used by |
19
|
|
|
* CodeIgniter_Sniffs_Files_ClosingFileCommentSniff |
20
|
|
|
* and CodeIgniter_Sniffs_Files_ClosingLocationCommentSniff. |
21
|
|
|
* |
22
|
|
|
* @category PHP |
23
|
|
|
* @package PHP_CodeSniffer |
24
|
|
|
* @author Thomas Ernest <[email protected]> |
25
|
|
|
* @copyright 2006 Thomas Ernest |
26
|
|
|
* @license http://thomas.ernest.fr/developement/php_cs/licence GNU General Public License |
27
|
|
|
* @link http://pear.php.net/package/PHP_CodeSniffer |
28
|
|
|
*/ |
29
|
|
|
|
30
|
|
|
namespace CodeIgniter\Sniffs\Files; |
31
|
|
|
|
32
|
|
|
use PHP_CodeSniffer\Sniffs\Sniff; |
33
|
|
|
use PHP_CodeSniffer\Files\File; |
34
|
|
|
|
35
|
|
|
class AbstractClosingCommentSniff implements Sniff |
36
|
|
|
{ |
37
|
|
|
/** |
38
|
|
|
* As an abstract class, this sniff is not associated to any token. |
39
|
|
|
*/ |
40
|
|
|
public function register() |
41
|
|
|
{ |
42
|
|
|
return array(); |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* As an abstract class, this sniff is not dedicated to process a token. |
47
|
|
|
*/ |
48
|
|
|
public function process(File $phpcsFile, $stackPtr) |
49
|
|
|
{ |
50
|
|
|
$error = __CLASS__.'::'.__METHOD__.' is abstract. Please develop this method in a child class.'; |
51
|
|
|
throw new PHP_CodeSniffer_Exception($error); |
52
|
|
|
} |
53
|
|
|
|
54
|
|
|
/** |
55
|
|
|
* Returns the comment without its delimiter(s) as well as leading |
56
|
|
|
* and traling whitespaces. |
57
|
|
|
* |
58
|
|
|
* It removes the first #, the two first / (i.e. //) or the first /* |
59
|
|
|
* and last \*\/. If a comment starts with /**, then the last * will remain |
60
|
|
|
* as well as whitespaces between this star and the comment content. |
61
|
|
|
* |
62
|
|
|
* @param string $comment Comment containing either comment delimiter(s) and |
63
|
|
|
* trailing or leading whitspaces to clean. |
64
|
|
|
* |
65
|
|
|
* @return string Comment without comment delimiter(s) and whitespaces. |
66
|
|
|
*/ |
67
|
|
|
protected static function _getCommentContent ($comment) |
68
|
|
|
{ |
69
|
|
|
if (self::_stringStartsWith($comment, '#')) { |
70
|
|
|
$comment = substr($comment, 1); |
71
|
|
|
} else if (self::_stringStartsWith($comment, '//')) { |
72
|
|
|
$comment = substr($comment, 2); |
73
|
|
|
} else if (self::_stringStartsWith($comment, '/*')) { |
74
|
|
|
$comment = substr($comment, 2, strlen($comment) - 2 - 2); |
75
|
|
|
} |
76
|
|
|
$comment = trim($comment); |
77
|
|
|
return $comment; |
78
|
|
|
}//_getCommentContent() |
79
|
|
|
|
80
|
|
|
|
81
|
|
|
/** |
82
|
|
|
* Binary safe string comparison between $needle and |
83
|
|
|
* the beginning of $haystack. Returns true if $haystack starts with |
84
|
|
|
* $needle, false otherwise. |
85
|
|
|
* |
86
|
|
|
* @param string $haystack The string to search in. |
87
|
|
|
* @param string $needle The string to search for. |
88
|
|
|
* |
89
|
|
|
* @return bool true if $haystack starts with $needle, false otherwise. |
90
|
|
|
*/ |
91
|
|
|
protected static function _stringStartsWith ($haystack, $needle) |
92
|
|
|
{ |
93
|
|
|
$startsWith = false; |
94
|
|
|
if (strlen($needle) <= strlen($haystack)) { |
95
|
|
|
$haystackBeginning = substr($haystack, 0, strlen($needle)); |
96
|
|
|
if (0 === strcmp($haystackBeginning, $needle)) { |
97
|
|
|
$startsWith = true; |
98
|
|
|
} |
99
|
|
|
} |
100
|
|
|
return $startsWith; |
101
|
|
|
}//_stringStartsWith() |
102
|
|
|
}//end class |
103
|
|
|
|
104
|
|
|
?> |
|
|
|
|
105
|
|
|
|
Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.
A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.