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

Breadcrumb

  1. Drupal Core 11.1.x

Requirement.php

Same filename in this branch
  1. 11.1.x vendor/phar-io/manifest/src/values/Requirement.php
  2. 11.1.x vendor/symfony/routing/Requirement/Requirement.php

Namespace

PHPUnit\Metadata\Version

File

vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php

View source
<?php

declare (strict_types=1);

/*
 * This file is part of PHPUnit.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace PHPUnit\Metadata\Version;

use function preg_match;
use PharIo\Version\UnsupportedVersionConstraintException;
use PharIo\Version\VersionConstraintParser;
use PHPUnit\Metadata\InvalidVersionRequirementException;
use PHPUnit\Util\InvalidVersionOperatorException;
use PHPUnit\Util\VersionComparisonOperator;

/**
 * @psalm-immutable
 *
 * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
 */
abstract class Requirement {
    private const VERSION_COMPARISON = '/(?P<operator>[<>=!]{0,2})\\s*(?P<version>[\\d\\.-]+(dev|(RC|alpha|beta)[\\d\\.])?)[ \\t]*\\r?$/m';
    
    /**
     * @throws InvalidVersionOperatorException
     * @throws InvalidVersionRequirementException
     */
    public static function from(string $versionRequirement) : self {
        try {
            return new ConstraintRequirement((new VersionConstraintParser())->parse($versionRequirement));
        } catch (UnsupportedVersionConstraintException) {
            if (preg_match(self::VERSION_COMPARISON, $versionRequirement, $matches)) {
                return new ComparisonRequirement($matches['version'], new VersionComparisonOperator(!empty($matches['operator']) ? $matches['operator'] : '>='));
            }
        }
        throw new InvalidVersionRequirementException();
    }
    public abstract function isSatisfiedBy(string $version) : bool;
    public abstract function asString() : string;

}

Classes

Title Deprecated Summary
Requirement @psalm-immutable
RSS feed
Powered by Drupal