class Modifiers
Modifiers used (as a bit mask) by various flags subnodes, for example on classes, functions, properties and constants.
Hierarchy
- class \PhpParser\Modifiers
Expanded class hierarchy of Modifiers
13 files declare their use of Modifiers
- ClassConst.php in vendor/
nikic/ php-parser/ lib/ PhpParser/ Node/ Stmt/ ClassConst.php - ClassConst.php in vendor/
nikic/ php-parser/ lib/ PhpParser/ Builder/ ClassConst.php - ClassMethod.php in vendor/
nikic/ php-parser/ lib/ PhpParser/ Node/ Stmt/ ClassMethod.php - Class_.php in vendor/
nikic/ php-parser/ lib/ PhpParser/ Node/ Stmt/ Class_.php - Class_.php in vendor/
nikic/ php-parser/ lib/ PhpParser/ Builder/ Class_.php
File
-
vendor/
nikic/ php-parser/ lib/ PhpParser/ Modifiers.php, line 9
Namespace
PhpParserView source
final class Modifiers {
public const PUBLIC = 1;
public const PROTECTED = 2;
public const PRIVATE = 4;
public const STATIC = 8;
public const ABSTRACT = 16;
public const FINAL = 32;
public const READONLY = 64;
public const PUBLIC_SET = 128;
public const PROTECTED_SET = 256;
public const PRIVATE_SET = 512;
public const VISIBILITY_MASK = self::PUBLIC | self::PROTECTED | self::PRIVATE;
public const VISIBILITY_SET_MASK = self::PUBLIC_SET | self::PROTECTED_SET | self::PRIVATE_SET;
private const TO_STRING_MAP = [
self::PUBLIC => 'public',
self::PROTECTED => 'protected',
self::PRIVATE => 'private',
self::STATIC => 'static',
self::ABSTRACT => 'abstract',
self::FINAL => 'final',
self::READONLY => 'readonly',
self::PUBLIC_SET => 'public(set)',
self::PROTECTED_SET => 'protected(set)',
self::PRIVATE_SET => 'private(set)',
];
public static function toString(int $modifier) : string {
if (!isset(self::TO_STRING_MAP[$modifier])) {
throw new \InvalidArgumentException("Unknown modifier {$modifier}");
}
return self::TO_STRING_MAP[$modifier];
}
private static function isValidModifier(int $modifier) : bool {
$isPow2 = ($modifier & $modifier - 1) == 0 && $modifier != 0;
return $isPow2 && $modifier <= self::PRIVATE_SET;
}
/**
* @internal
*/
public static function verifyClassModifier(int $a, int $b) : void {
assert(self::isValidModifier($b));
if (($a & $b) != 0) {
throw new Error('Multiple ' . self::toString($b) . ' modifiers are not allowed');
}
if ($a & 48 && $b & 48) {
throw new Error('Cannot use the final modifier on an abstract class');
}
}
/**
* @internal
*/
public static function verifyModifier(int $a, int $b) : void {
assert(self::isValidModifier($b));
if ($a & Modifiers::VISIBILITY_MASK && $b & Modifiers::VISIBILITY_MASK || $a & Modifiers::VISIBILITY_SET_MASK && $b & Modifiers::VISIBILITY_SET_MASK) {
throw new Error('Multiple access type modifiers are not allowed');
}
if (($a & $b) != 0) {
throw new Error('Multiple ' . self::toString($b) . ' modifiers are not allowed');
}
if ($a & 48 && $b & 48) {
throw new Error('Cannot use the final modifier on an abstract class member');
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Modifiers::ABSTRACT | public | constant | |
Modifiers::FINAL | public | constant | |
Modifiers::isValidModifier | private static | function | |
Modifiers::PRIVATE | public | constant | |
Modifiers::PRIVATE_SET | public | constant | |
Modifiers::PROTECTED | public | constant | |
Modifiers::PROTECTED_SET | public | constant | |
Modifiers::PUBLIC | public | constant | |
Modifiers::PUBLIC_SET | public | constant | |
Modifiers::READONLY | public | constant | |
Modifiers::STATIC | public | constant | |
Modifiers::toString | public static | function | |
Modifiers::TO_STRING_MAP | private | constant | |
Modifiers::verifyClassModifier | public static | function | @internal |
Modifiers::verifyModifier | public static | function | @internal |
Modifiers::VISIBILITY_MASK | public | constant | |
Modifiers::VISIBILITY_SET_MASK | public | constant |