PHPCSUtils

ObjectDeclarations
in package

Utility functions for use when examining object declaration statements.

Tags
since
1.0.0

The ObjectDeclarations::get(Declaration)Name(), ObjectDeclarations::getClassProperties(), ObjectDeclarations::findExtendedClassName() and ObjectDeclarations::findImplementedInterfaceNames() methods are based on and inspired by the methods of the same name in the PHPCS native PHP_CodeSniffer\Files\File class. Also see BCFile.

since
1.0.0-alpha4

Dropped support for PHPCS < 3.7.1.

Table of Contents

findExtendedClassName()  : string|false
Retrieves the name of the class that the specified class extends.
findExtendedInterfaceNames()  : array<string|int, mixed>|false
Retrieves the names of the interfaces that the specified interface extends.
findImplementedInterfaceNames()  : array<string|int, mixed>|false
Retrieves the names of the interfaces that the specified class or enum implements.
getClassProperties()  : array<string|int, mixed>
Retrieves the implementation properties of a class.
getName()  : string|null
Retrieves the declaration name for classes, interfaces, traits, enums and functions.

Methods

findExtendedClassName()

Retrieves the name of the class that the specified class extends.

public static findExtendedClassName(File $phpcsFile, int $stackPtr) : string|false

Works for classes, anonymous classes and interfaces, though it is strongly recommended to use the ObjectDeclarations::findExtendedInterfaceNames() method to examine interfaces instead. Interfaces can extend multiple parent interfaces, and that use-case is not handled by this method.

Main differences with the PHPCS version:

  • Bugs fixed:
    • Handling of PHPCS annotations.
    • Handling of comments.
    • Handling of the namespace keyword used as operator.
  • Improved handling of parse errors.
  • The returned name will be clean of superfluous whitespace and/or comments.
  • Support for PHP 8.0 tokenization of identifier/namespaced names, cross-version PHP & PHPCS.
Parameters
$phpcsFile : File

The file being scanned.

$stackPtr : int

The stack position of the class or interface.

Tags
see
File::findExtendedClassName()

Original source.

see
BCFile::findExtendedClassName()

Cross-version compatible version of the original.

see
ObjectDeclarations::findExtendedInterfaceNames()

Similar method for extended interfaces.

since
1.0.0
Return values
string|false

The extended class name or FALSE on error or if there is no extended class name.

findExtendedInterfaceNames()

Retrieves the names of the interfaces that the specified interface extends.

public static findExtendedInterfaceNames(File $phpcsFile, int $stackPtr) : array<string|int, mixed>|false
Parameters
$phpcsFile : File

The file where this token was found.

$stackPtr : int

The stack position of the interface keyword.

Tags
see
ObjectDeclarations::findExtendedClassName()

Similar method for extended classes.

since
1.0.0
Return values
array<string|int, mixed>|false

Array with names of the extended interfaces or FALSE on error or if there are no extended interface names.

findImplementedInterfaceNames()

Retrieves the names of the interfaces that the specified class or enum implements.

public static findImplementedInterfaceNames(File $phpcsFile, int $stackPtr) : array<string|int, mixed>|false

Main differences with the PHPCS version:

  • Bugs fixed:
    • Handling of PHPCS annotations.
    • Handling of comments.
    • Handling of the namespace keyword used as operator.
  • Improved handling of parse errors.
  • The returned name(s) will be clean of superfluous whitespace and/or comments.
  • Support for PHP 8.0 tokenization of identifier/namespaced names, cross-version PHP & PHPCS.
Parameters
$phpcsFile : File

The file being scanned.

$stackPtr : int

The stack position of the class or enum token.

Tags
see
File::findImplementedInterfaceNames()

Original source.

see
BCFile::findImplementedInterfaceNames()

Cross-version compatible version of the original.

since
1.0.0
since
1.0.0-alpha4

Added support for PHP 8.1 enums.

Return values
array<string|int, mixed>|false

Array with names of the implemented interfaces or FALSE on error or if there are no implemented interface names.

getClassProperties()

Retrieves the implementation properties of a class.

public static getClassProperties(File $phpcsFile, int $stackPtr) : array<string|int, mixed>

Main differences with the PHPCS version:

  • Bugs fixed:
    • Handling of PHPCS annotations.
    • Handling of unorthodox docblock placement.
  • Defensive coding against incorrect calls to this method.
  • Support for PHP 8.2 readonly classes.
Parameters
$phpcsFile : File

The file being scanned.

$stackPtr : int

The position in the stack of the T_CLASS token to acquire the properties for.

Tags
see
File::getClassProperties()

Original source.

see
BCFile::getClassProperties()

Cross-version compatible version of the original.

since
1.0.0
since
1.0.0-alpha4

Added support for the PHP 8.2 readonly keyword.

throws
RuntimeException

If the specified position is not a T_CLASS token.

Return values
array<string|int, mixed>

Array with implementation properties of a class. The format of the return value is:

array(
  'is_abstract' => false, // TRUE if the abstract keyword was found.
  'is_final'    => false, // TRUE if the final keyword was found.
  'is_readonly' => false, // TRUE if the readonly keyword was found.
);

getName()

Retrieves the declaration name for classes, interfaces, traits, enums and functions.

public static getName(File $phpcsFile, int $stackPtr) : string|null

Main differences with the PHPCS version:

  • Defensive coding against incorrect calls to this method.
  • Improved handling of invalid names, like names starting with a number. This allows sniffs to report on invalid names instead of ignoring them.
  • Bug fix: improved handling of parse errors. Using the original method, a parse error due to an invalid name could cause the method to return the name of the next construct, a partial name and/or the name of a class being extended/interface being implemented. Using this version of the utility method, either the complete name (invalid or not) will be returned or null in case of no name (parse error).
Parameters
$phpcsFile : File

The file being scanned.

$stackPtr : int

The position of the declaration token which declared the class, interface, trait, enum or function.

Tags
see
File::getDeclarationName()

Original source.

see
BCFile::getDeclarationName()

Cross-version compatible version of the original.

since
1.0.0
since
1.0.0-alpha4

Added support for PHP 8.1 enums.

throws
RuntimeException

If the specified token is not of type T_FUNCTION, T_CLASS, T_ANON_CLASS, T_CLOSURE, T_TRAIT, T_ENUM or T_INTERFACE.

Return values
string|null

The name of the class, interface, trait, enum, or function; or NULL if the passed token doesn't exist, the function or class is anonymous or in case of a parse error/live coding.

Search results