You are here

class MultiConstraint in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/composer/semver/src/Constraint/MultiConstraint.php \Composer\Semver\Constraint\MultiConstraint

Defines a conjunctive or disjunctive set of constraints.

Hierarchy

Expanded class hierarchy of MultiConstraint

1 file declares its use of MultiConstraint
VersionParser.php in vendor/composer/semver/src/VersionParser.php

File

vendor/composer/semver/src/Constraint/MultiConstraint.php, line 17

Namespace

Composer\Semver\Constraint
View source
class MultiConstraint implements ConstraintInterface {

  /** @var ConstraintInterface[] */
  protected $constraints;

  /** @var string */
  protected $prettyString;

  /** @var bool */
  protected $conjunctive;

  /**
   * @param ConstraintInterface[] $constraints A set of constraints
   * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive
   */
  public function __construct(array $constraints, $conjunctive = true) {
    $this->constraints = $constraints;
    $this->conjunctive = $conjunctive;
  }

  /**
   * @param ConstraintInterface $provider
   *
   * @return bool
   */
  public function matches(ConstraintInterface $provider) {
    if (false === $this->conjunctive) {
      foreach ($this->constraints as $constraint) {
        if ($constraint
          ->matches($provider)) {
          return true;
        }
      }
      return false;
    }
    foreach ($this->constraints as $constraint) {
      if (!$constraint
        ->matches($provider)) {
        return false;
      }
    }
    return true;
  }

  /**
   * @param string $prettyString
   */
  public function setPrettyString($prettyString) {
    $this->prettyString = $prettyString;
  }

  /**
   * @return string
   */
  public function getPrettyString() {
    if ($this->prettyString) {
      return $this->prettyString;
    }
    return $this
      ->__toString();
  }

  /**
   * @return string
   */
  public function __toString() {
    $constraints = array();
    foreach ($this->constraints as $constraint) {
      $constraints[] = (string) $constraint;
    }
    return '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']';
  }

}

Members