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

Breadcrumb

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

class PhpVersion

A PHP version, representing only the major and minor version components.

Hierarchy

  • class \PhpParser\PhpVersion

Expanded class hierarchy of PhpVersion

12 files declare their use of PhpVersion
AsymmetricVisibilityTokenEmulator.php in vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php
AttributeEmulator.php in vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
Emulative.php in vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
EnumTokenEmulator.php in vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php
ExplicitOctalEmulator.php in vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php

... See full list

1 string reference to 'PhpVersion'
Loader::testSuite in vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php

File

vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php, line 8

Namespace

PhpParser
View source
class PhpVersion {
    
    /** @var int Version ID in PHP_VERSION_ID format */
    public int $id;
    
    /** @var int[] Minimum versions for builtin types */
    private const BUILTIN_TYPE_VERSIONS = [
        'array' => 50100,
        'callable' => 50400,
        'bool' => 70000,
        'int' => 70000,
        'float' => 70000,
        'string' => 70000,
        'iterable' => 70100,
        'void' => 70100,
        'object' => 70200,
        'null' => 80000,
        'false' => 80000,
        'mixed' => 80000,
        'never' => 80100,
        'true' => 80200,
    ];
    private function __construct(int $id) {
        $this->id = $id;
    }
    
    /**
     * Create a PhpVersion object from major and minor version components.
     */
    public static function fromComponents(int $major, int $minor) : self {
        return new self($major * 10000 + $minor * 100);
    }
    
    /**
     * Get the newest PHP version supported by this library. Support for this version may be partial,
     * if it is still under development.
     */
    public static function getNewestSupported() : self {
        return self::fromComponents(8, 4);
    }
    
    /**
     * Get the host PHP version, that is the PHP version we're currently running on.
     */
    public static function getHostVersion() : self {
        return self::fromComponents(\PHP_MAJOR_VERSION, \PHP_MINOR_VERSION);
    }
    
    /**
     * Parse the version from a string like "8.1".
     */
    public static function fromString(string $version) : self {
        if (!preg_match('/^(\\d+)\\.(\\d+)/', $version, $matches)) {
            throw new \LogicException("Invalid PHP version \"{$version}\"");
        }
        return self::fromComponents((int) $matches[1], (int) $matches[2]);
    }
    
    /**
     * Check whether two versions are the same.
     */
    public function equals(PhpVersion $other) : bool {
        return $this->id === $other->id;
    }
    
    /**
     * Check whether this version is greater than or equal to the argument.
     */
    public function newerOrEqual(PhpVersion $other) : bool {
        return $this->id >= $other->id;
    }
    
    /**
     * Check whether this version is older than the argument.
     */
    public function older(PhpVersion $other) : bool {
        return $this->id < $other->id;
    }
    
    /**
     * Check whether this is the host PHP version.
     */
    public function isHostVersion() : bool {
        return $this->equals(self::getHostVersion());
    }
    
    /**
     * Check whether this PHP version supports the given builtin type. Type name must be lowercase.
     */
    public function supportsBuiltinType(string $type) : bool {
        $minVersion = self::BUILTIN_TYPE_VERSIONS[$type] ?? null;
        return $minVersion !== null && $this->id >= $minVersion;
    }
    
    /**
     * Whether this version supports [] array literals.
     */
    public function supportsShortArraySyntax() : bool {
        return $this->id >= 50400;
    }
    
    /**
     * Whether this version supports [] for destructuring.
     */
    public function supportsShortArrayDestructuring() : bool {
        return $this->id >= 70100;
    }
    
    /**
     * Whether this version supports flexible heredoc/nowdoc.
     */
    public function supportsFlexibleHeredoc() : bool {
        return $this->id >= 70300;
    }
    
    /**
     * Whether this version supports trailing commas in parameter lists.
     */
    public function supportsTrailingCommaInParamList() : bool {
        return $this->id >= 80000;
    }
    
    /**
     * Whether this version allows "$var =& new Obj".
     */
    public function allowsAssignNewByReference() : bool {
        return $this->id < 70000;
    }
    
    /**
     * Whether this version allows invalid octals like "08".
     */
    public function allowsInvalidOctals() : bool {
        return $this->id < 70000;
    }
    
    /**
     * Whether this version allows DEL (\x7f) to occur in identifiers.
     */
    public function allowsDelInIdentifiers() : bool {
        return $this->id < 70100;
    }
    
    /**
     * Whether this version supports yield in expression context without parentheses.
     */
    public function supportsYieldWithoutParentheses() : bool {
        return $this->id >= 70000;
    }
    
    /**
     * Whether this version supports unicode escape sequences in strings.
     */
    public function supportsUnicodeEscapes() : bool {
        return $this->id >= 70000;
    }

}

Members

Title Sort descending Modifiers Object type Summary
PhpVersion::$id public property @var int Version ID in PHP_VERSION_ID format
PhpVersion::allowsAssignNewByReference public function Whether this version allows &quot;$var =&amp; new Obj&quot;.
PhpVersion::allowsDelInIdentifiers public function Whether this version allows DEL (\x7f) to occur in identifiers.
PhpVersion::allowsInvalidOctals public function Whether this version allows invalid octals like &quot;08&quot;.
PhpVersion::BUILTIN_TYPE_VERSIONS private constant @var int[] Minimum versions for builtin types
PhpVersion::equals public function Check whether two versions are the same.
PhpVersion::fromComponents public static function Create a PhpVersion object from major and minor version components.
PhpVersion::fromString public static function Parse the version from a string like &quot;8.1&quot;.
PhpVersion::getHostVersion public static function Get the host PHP version, that is the PHP version we&#039;re currently running on.
PhpVersion::getNewestSupported public static function Get the newest PHP version supported by this library. Support for this version may be partial,
if it is still under development.
PhpVersion::isHostVersion public function Check whether this is the host PHP version.
PhpVersion::newerOrEqual public function Check whether this version is greater than or equal to the argument.
PhpVersion::older public function Check whether this version is older than the argument.
PhpVersion::supportsBuiltinType public function Check whether this PHP version supports the given builtin type. Type name must be lowercase.
PhpVersion::supportsFlexibleHeredoc public function Whether this version supports flexible heredoc/nowdoc.
PhpVersion::supportsShortArrayDestructuring public function Whether this version supports [] for destructuring.
PhpVersion::supportsShortArraySyntax public function Whether this version supports [] array literals.
PhpVersion::supportsTrailingCommaInParamList public function Whether this version supports trailing commas in parameter lists.
PhpVersion::supportsUnicodeEscapes public function Whether this version supports unicode escape sequences in strings.
PhpVersion::supportsYieldWithoutParentheses public function Whether this version supports yield in expression context without parentheses.
PhpVersion::__construct private function

API Navigation

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