PHP 8.3.30
Preview: Modifiers.php Size: 2.71 KB
/home/getspomw/itechservicellc.com/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php

<?php declare(strict_types=1);

namespace PhpParser;

/**
 * Modifiers used (as a bit mask) by various flags subnodes, for example on classes, functions,
 * properties and constants.
 */
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');
        }
    }
}

Directory Contents

Dirs: 9 × Files: 28

Name Size Perms Modified Actions
Builder DIR
- drwxr-xr-x 2025-11-18 19:24:02
Edit Download
Comment DIR
- drwxr-xr-x 2025-11-18 19:24:02
Edit Download
- drwxr-xr-x 2025-11-18 19:24:02
Edit Download
Internal DIR
- drwxr-xr-x 2025-11-18 19:24:02
Edit Download
Lexer DIR
- drwxr-xr-x 2025-11-18 19:24:02
Edit Download
Node DIR
- drwxr-xr-x 2025-11-18 19:24:04
Edit Download
- drwxr-xr-x 2025-11-18 19:24:04
Edit Download
Parser DIR
- drwxr-xr-x 2025-11-18 19:24:04
Edit Download
- drwxr-xr-x 2025-11-18 19:24:04
Edit Download
202 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download
10.30 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
9.73 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
6.75 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
2.39 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
112 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download
9.21 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
4.84 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
300 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download
3.44 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
4.26 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
2.71 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
9.82 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
4.03 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
5.24 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
10.24 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
2.55 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
10.09 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
598 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download
4.08 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
447 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download
765 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download
50.13 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
1.41 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
4.62 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
1.66 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
70.38 KB lrw-r--r-- 2025-10-28 20:23:04
Edit Download
487 B lrw-r--r-- 2025-10-28 20:23:04
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).