protected function ValidVariableNameSniff::processMemberVar in Coder 8.3
Same name and namespace in other branches
- 8.2 coder_sniffer/Drupal/Sniffs/NamingConventions/ValidVariableNameSniff.php \Drupal\Sniffs\NamingConventions\ValidVariableNameSniff::processMemberVar()
- 8.3.x coder_sniffer/Drupal/Sniffs/NamingConventions/ValidVariableNameSniff.php \Drupal\Sniffs\NamingConventions\ValidVariableNameSniff::processMemberVar()
Processes class member variables.
Parameters
\PHP_CodeSniffer\Files\File $phpcsFile The file being scanned.:
int $stackPtr The position of the current token: in the stack passed in $tokens.
Return value
void
File
- coder_sniffer/
Drupal/ Sniffs/ NamingConventions/ ValidVariableNameSniff.php, line 37
Class
Namespace
Drupal\Sniffs\NamingConventionsCode
protected function processMemberVar(File $phpcsFile, $stackPtr) {
$tokens = $phpcsFile
->getTokens();
$memberProps = $phpcsFile
->getMemberProperties($stackPtr);
if (empty($memberProps) === true) {
return;
}
// Check if the class extends another class and get the name of the class
// that is extended.
if (empty($tokens[$stackPtr]['conditions']) === false) {
$classPtr = key($tokens[$stackPtr]['conditions']);
$extendsName = $phpcsFile
->findExtendedClassName($classPtr);
// Special case config entities: those are allowed to have underscores in
// their class property names. If a class extends something like
// ConfigEntityBase then we consider it a config entity class and allow
// underscores.
if ($extendsName !== false && strpos($extendsName, 'ConfigEntity') !== false) {
return;
}
// Plugin annotations may have underscores in class properties.
// For example, see \Drupal\Core\Field\Annotation\FieldFormatter.
// The only class named "Plugin" in Drupal core is
// \Drupal\Component\Annotation\Plugin while many Views plugins
// extend \Drupal\views\Annotation\ViewsPluginAnnotationBase.
if ($extendsName !== false && in_array($extendsName, [
'Plugin',
'ViewsPluginAnnotationBase',
]) !== false) {
return;
}
$implementsNames = $phpcsFile
->findImplementedInterfaceNames($classPtr);
if ($implementsNames !== false && in_array('AnnotationInterface', $implementsNames) !== false) {
return;
}
}
//end if
// The name of a property must start with a lowercase letter, properties
// with underscores are not allowed, except the cases handled above.
$memberName = ltrim($tokens[$stackPtr]['content'], '$');
if (preg_match('/^[a-z]/', $memberName) === 1 && strpos($memberName, '_') === false) {
return;
}
$error = 'Class property %s should use lowerCamel naming without underscores';
$data = [
$tokens[$stackPtr]['content'],
];
$phpcsFile
->addError($error, $stackPtr, 'LowerCamelName', $data);
}