Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Modifiers.php

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

... See full list

File

vendor/nikic/php-parser/lib/PhpParser/Modifiers.php, line 9

Namespace

PhpParser
View 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

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal