You are here

class ArgumentsWildcard in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php \Prophecy\Argument\ArgumentsWildcard

Arguments wildcarding.

@author Konstantin Kudryashov <ever.zet@gmail.com>

Hierarchy

Expanded class hierarchy of ArgumentsWildcard

5 files declare their use of ArgumentsWildcard
CallCenter.php in vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
CallCenterSpec.php in vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php
CallPrediction.php in vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php
CallTimesPrediction.php in vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php
ObjectProphecy.php in vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php

File

vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php, line 19

Namespace

Prophecy\Argument
View source
class ArgumentsWildcard {

  /**
   * @var Token\TokenInterface[]
   */
  private $tokens = array();
  private $string;

  /**
   * Initializes wildcard.
   *
   * @param array $arguments Array of argument tokens or values
   */
  public function __construct(array $arguments) {
    foreach ($arguments as $argument) {
      if (!$argument instanceof Token\TokenInterface) {
        $argument = new Token\ExactValueToken($argument);
      }
      $this->tokens[] = $argument;
    }
  }

  /**
   * Calculates wildcard match score for provided arguments.
   *
   * @param array $arguments
   *
   * @return false|int False OR integer score (higher - better)
   */
  public function scoreArguments(array $arguments) {
    if (0 == count($arguments) && 0 == count($this->tokens)) {
      return 1;
    }
    $arguments = array_values($arguments);
    $totalScore = 0;
    foreach ($this->tokens as $i => $token) {
      $argument = isset($arguments[$i]) ? $arguments[$i] : null;
      if (1 >= ($score = $token
        ->scoreArgument($argument))) {
        return false;
      }
      $totalScore += $score;
      if (true === $token
        ->isLast()) {
        return $totalScore;
      }
    }
    if (count($arguments) > count($this->tokens)) {
      return false;
    }
    return $totalScore;
  }

  /**
   * Returns string representation for wildcard.
   *
   * @return string
   */
  public function __toString() {
    if (null === $this->string) {
      $this->string = implode(', ', array_map(function ($token) {
        return (string) $token;
      }, $this->tokens));
    }
    return $this->string;
  }

  /**
   * @return array
   */
  public function getTokens() {
    return $this->tokens;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ArgumentsWildcard::$string private property
ArgumentsWildcard::$tokens private property
ArgumentsWildcard::getTokens public function
ArgumentsWildcard::scoreArguments public function Calculates wildcard match score for provided arguments.
ArgumentsWildcard::__construct public function Initializes wildcard.
ArgumentsWildcard::__toString public function Returns string representation for wildcard.