Source for file PropertyDeclarationSniff.php
Documentation is available at PropertyDeclarationSniff.php
* Verifies that properties are declared correctly.
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
namespace PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes;
use PHP_CodeSniffer\Sniffs\AbstractVariableSniff;
use PHP_CodeSniffer\Util\Tokens;
use PHP_CodeSniffer\Files\File;
class PropertyDeclarationSniff extends AbstractVariableSniff
* Processes the function tokens within the class.
* @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found.
* @param int $stackPtr The position where the token was found.
protected function processMemberVar (File $phpcsFile, $stackPtr)
$tokens = $phpcsFile->getTokens ();
if ($tokens[$stackPtr]['content'][1 ] === '_') {
$error = 'Property name "%s" should not be prefixed with an underscore to indicate visibility';
$data = array ($tokens[$stackPtr]['content']);
$phpcsFile->addWarning ($error, $stackPtr, 'Underscore', $data);
// Detect multiple properties defined at the same time. Throw an error
// for this, but also only process the first property in the list so we don't
$find = Tokens ::$scopeModifiers;
$find = array_merge ($find, array (T_VARIABLE , T_VAR , T_SEMICOLON));
$prev = $phpcsFile->findPrevious ($find, ($stackPtr - 1 ));
if ($tokens[$prev]['code'] === T_VARIABLE ) {
if ($tokens[$prev]['code'] === T_VAR ) {
$error = 'The var keyword must not be used to declare a property';
$phpcsFile->addError ($error, $stackPtr, 'VarUsed');
$next = $phpcsFile->findNext (array (T_VARIABLE , T_SEMICOLON), ($stackPtr + 1 ));
if ($tokens[$next]['code'] === T_VARIABLE ) {
$error = 'There must not be more than one property declared per statement';
$phpcsFile->addError ($error, $stackPtr, 'Multiple');
$modifier = $phpcsFile->findPrevious (Tokens ::$scopeModifiers, $stackPtr);
if (($modifier === false ) || ($tokens[$modifier]['line'] !== $tokens[$stackPtr]['line'])) {
$error = 'Visibility must be declared on property "%s"';
$data = array ($tokens[$stackPtr]['content']);
$phpcsFile->addError ($error, $stackPtr, 'ScopeMissing', $data);
}//end processMemberVar()
* Processes normal variables.
* @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found.
* @param int $stackPtr The position where the token was found.
protected function processVariable (File $phpcsFile, $stackPtr)
We don't care about normal variables.
* Processes variables in double quoted strings.
* @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found.
* @param int $stackPtr The position where the token was found.
protected function processVariableInString (File $phpcsFile, $stackPtr)
We don't care about normal variables.
}//end processVariableInString()
Documentation generated on Mon, 11 Mar 2019 15:27:42 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|