Chris@0: getTokens(); Chris@0: Chris@0: // We are only interested in Drupal:: static method calls, not in the global Chris@0: // scope. Chris@0: if ($tokens[$stackPtr]['content'] !== 'Drupal' Chris@0: || $tokens[($stackPtr + 1)]['code'] !== T_DOUBLE_COLON Chris@0: || isset($tokens[($stackPtr + 2)]) === false Chris@0: || $tokens[($stackPtr + 2)]['code'] !== T_STRING Chris@0: || isset($tokens[($stackPtr + 3)]) === false Chris@0: || $tokens[($stackPtr + 3)]['code'] !== T_OPEN_PARENTHESIS Chris@0: || empty($tokens[$stackPtr]['conditions']) === true Chris@0: ) { Chris@0: return; Chris@0: } Chris@0: Chris@0: // Check that this statement is not in a static function. Chris@0: foreach ($tokens[$stackPtr]['conditions'] as $conditionPtr => $conditionCode) { Chris@0: if ($conditionCode === T_FUNCTION && $phpcsFile->getMethodProperties($conditionPtr)['is_static'] === true) { Chris@0: return; Chris@0: } Chris@0: } Chris@0: Chris@0: // Check if the class extends another class and get the name of the class Chris@0: // that is extended. Chris@0: $classPtr = key($tokens[$stackPtr]['conditions']); Chris@0: $extendsName = $phpcsFile->findExtendedClassName($classPtr); Chris@0: Chris@0: if (($extendsName === false || in_array($extendsName, static::$baseClasses) === false) Chris@17: && Project::isServiceClass($phpcsFile, $classPtr) === false Chris@0: ) { Chris@0: return; Chris@0: } Chris@0: Chris@0: $warning = '\Drupal calls should be avoided in classes, use dependency injection instead'; Chris@0: $phpcsFile->addWarning($warning, $stackPtr, 'GlobalDrupal'); Chris@0: Chris@0: }//end process() Chris@0: Chris@0: Chris@0: }//end class