PHP_CodeSniffer_File::findExtendedClassName PHP Method

findExtendedClassName() public method

Returns FALSE on error or if there is no extended class name.
public findExtendedClassName ( integer $stackPtr ) : string
$stackPtr integer The stack position of the class.
return string
    public function findExtendedClassName($stackPtr)
    {
        // Check for the existence of the token.
        if (isset($this->_tokens[$stackPtr]) === false) {
            return false;
        }
        if ($this->_tokens[$stackPtr]['code'] !== T_CLASS) {
            return false;
        }
        if (isset($this->_tokens[$stackPtr]['scope_closer']) === false) {
            return false;
        }
        $classCloserIndex = $this->_tokens[$stackPtr]['scope_closer'];
        $extendsIndex = $this->findNext(T_EXTENDS, $stackPtr, $classCloserIndex);
        if (false === $extendsIndex) {
            return false;
        }
        $find = array(T_NS_SEPARATOR, T_STRING, T_WHITESPACE);
        $end = $this->findNext($find, $extendsIndex + 1, $classCloserIndex, true);
        $name = $this->getTokensAsString($extendsIndex + 1, $end - $extendsIndex - 1);
        $name = trim($name);
        if ($name === '') {
            return false;
        }
        return $name;
    }

Usage Example

 /**
  * Processes this test when one of its tokens is encountered.
  *
  * @param PHP_CodeSniffer_File $phpcsFile The current file being scanned.
  * @param int                  $stackPtr  The position of the current token
  *                                        in the stack passed in $tokens.
  * @param int                  $currScope A pointer to the start of the scope.
  *
  * @return void
  */
 protected function processTokenWithinScope(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $currScope)
 {
     $className = $phpcsFile->getDeclarationName($currScope);
     $methodName = $phpcsFile->getDeclarationName($stackPtr);
     if (strcasecmp($methodName, $className) === 0) {
         $error = 'PHP4 style constructors are not allowed; use "__construct()" instead';
         $phpcsFile->addError($error, $stackPtr, 'OldStyle');
     } else {
         if (strcasecmp($methodName, '__construct') !== 0) {
             // Not a constructor.
             return;
         }
     }
     $tokens = $phpcsFile->getTokens();
     $parentClassName = $phpcsFile->findExtendedClassName($currScope);
     if ($parentClassName === false) {
         return;
     }
     $endFunctionIndex = $tokens[$stackPtr]['scope_closer'];
     $startIndex = $stackPtr;
     while ($doubleColonIndex = $phpcsFile->findNext(array(T_DOUBLE_COLON), $startIndex, $endFunctionIndex)) {
         if ($tokens[$doubleColonIndex + 1]['code'] === T_STRING && $tokens[$doubleColonIndex + 1]['content'] === $parentClassName) {
             $error = 'PHP4 style calls to parent constructors are not allowed; use "parent::__construct()" instead';
             $phpcsFile->addError($error, $doubleColonIndex + 1, 'OldStyleCall');
         }
         $startIndex = $doubleColonIndex + 1;
     }
 }
All Usage Examples Of PHP_CodeSniffer_File::findExtendedClassName