Overview

Namespaces

  • None
  • Peridot
    • Leo
      • Formatter
      • Interfaces
        • Assert
      • Matcher
        • Template
      • ObjectPath
      • Responder
  • PHP

Classes

  • AbstractMatcher
  • CountableMatcher
  • EmptyMatcher
  • EqualMatcher
  • ExceptionMatcher
  • GreaterThanMatcher
  • GreaterThanOrEqualMatcher
  • InclusionMatcher
  • InstanceofMatcher
  • KeysMatcher
  • LengthMatcher
  • LessThanMatcher
  • LessThanOrEqualMatcher
  • Match
  • NullMatcher
  • PatternMatcher
  • PredicateMatcher
  • PropertyMatcher
  • RangeMatcher
  • SameMatcher
  • SubStringMatcher
  • TrueMatcher
  • TruthyMatcher
  • TypeMatcher

Interfaces

  • MatcherInterface
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: namespace Peridot\Leo\Matcher;
  3: 
  4: use Peridot\Leo\Matcher\Template\TemplateInterface;
  5: 
  6: /**
  7:  * CountableMatcher a matcher is a matcher that matches numeric values,
  8:  * or reduces a countable value - like array, string, or Countable - to a single
  9:  * numeric value.
 10:  *
 11:  * @package Peridot\Leo\Matcher
 12:  */
 13: abstract class CountableMatcher extends AbstractMatcher
 14: {
 15:     /**
 16:      * @var mixed
 17:      */
 18:     protected $countable;
 19: 
 20:     /**
 21:      * Set the countable value used by the CountableMatcher.
 22:      *
 23:      * @param mixed $countable
 24:      * @return $this
 25:      */
 26:     public function setCountable($countable)
 27:     {
 28:         $this->countable = $countable;
 29:         return $this;
 30:     }
 31: 
 32:     /**
 33:      * Return the countable used by the CountableMatcher.
 34:      *
 35:      * @return mixed
 36:      */
 37:     public function getCountable()
 38:     {
 39:         return $this->countable;
 40:     }
 41: 
 42:     /**
 43:      * Get the count of the countable value.
 44:      * @return int
 45:      */
 46:     public function getCount()
 47:     {
 48:         if (is_string($this->countable)) {
 49:             return strlen($this->countable);
 50:         }
 51: 
 52:         return count($this->countable);
 53:     }
 54: 
 55:     /**
 56:      * {@inheritdoc}
 57:      *
 58:      * Returns a default countable interface if the countable is set.
 59:      *
 60:      * @return TemplateInterface
 61:      */
 62:     public function getTemplate()
 63:     {
 64:         if (isset($this->countable)) {
 65:             return $this->getDefaultCountableTemplate();
 66:         }
 67: 
 68:         return parent::getTemplate();
 69:     }
 70: 
 71:     /**
 72:      * {@inheritdoc}
 73:      *
 74:      * @param $actual
 75:      * @return mixed
 76:      */
 77:     protected function doMatch($actual = null)
 78:     {
 79:         if (isset($this->countable)) {
 80:             $actual = $this->getCount();
 81:         }
 82: 
 83:         if (!is_numeric($actual)) {
 84:             throw new \InvalidArgumentException(get_class($this) . " requires a numeric value");
 85:         }
 86: 
 87:         return $this->matchNumeric($actual);
 88:     }
 89: 
 90:     /**
 91:      * Return a default template for when a countable has been set.
 92:      *
 93:      * @return TemplateInterface
 94:      */
 95:     abstract public function getDefaultCountableTemplate();
 96: 
 97:     /**
 98:      * Determine if a number matches a specified condition
 99:      *
100:      * @param $number
101:      * @return bool
102:      */
103:     abstract protected function matchNumeric($number);
104: }
105: 
Leo API documentation generated by ApiGen