/** * Validate score * * @param $key * @param $value * @return string */ public function validate($key, $value) { $rule = $this->ruleSet->getRule($key); if (!is_array($rule) || !is_numeric($value)) { return self::UNKNOWN; } // according order if ($rule[0] < $rule[2]) { // critical < warn < good switch (true) { case $value < $rule[1]: return self::CRITICAL; case $value >= $rule[1] && $value < $rule[2]: return self::WARNING; default: return self::GOOD; } } // critical > warn > good switch (true) { case $value > $rule[1]: return self::CRITICAL; case $value < $rule[2]: return self::GOOD; default: return self::WARNING; } }
public function testSetupRecursively() { $handler = $this->getMock('\\PHPVS\\RuleSet'); $handler->expects($this->atLeastOnce())->method('handle'); RuleSet::filter(['array' => ['age' => -1, 'email' => 'not an email']], ['array' => RuleSet::setup(['age' => Validator::int()->prepare(), 'email' => Validator::email()->prepare()], $required = true)], "", $handler); // test not required $handler2 = $this->getMock('\\PHPVS\\RuleSet'); $handler2->expects($this->never())->method('handle'); RuleSet::filter(['array' => ['age' => "", 'email' => ""]], ['array' => RuleSet::setup(['age' => Validator::int()->required(false)->prepare(), 'email' => Validator::email()->required(false)->prepare()], $required = true)], "", $handler2); }
/** * @param $filter * @param array $options * @param null $flag * @return $this */ public function setup($filter, $options = array(), $flag = null) { parent::setup($filter, $options, $flag); $this->required = null; $this->default = null; $this->attr = array(); if (RuleSet::getParsers() instanceof \SplObjectStorage) { foreach (RuleSet::getParsers() as $parser) { call_user_func(array($parser, 'parse'), $this); } } return $this; }
/** * This method parses a single rule that was included from a different * rule-set. * * @param \PHPMD\RuleSet $ruleSet * @param \SimpleXMLElement $ruleNode * @return void */ private function parseRuleReferenceNode(RuleSet $ruleSet, \SimpleXMLElement $ruleNode) { $ref = (string) $ruleNode['ref']; $fileName = substr($ref, 0, strpos($ref, '.xml/') + 4); $fileName = $this->createRuleSetFileName($fileName); $ruleName = substr($ref, strpos($ref, '.xml/') + 5); $ruleSetFactory = new RuleSetFactory(); $ruleSetRef = $ruleSetFactory->createSingleRuleSet($fileName); $rule = $ruleSetRef->getRuleByName($ruleName); if (trim($ruleNode['name']) !== '') { $rule->setName((string) $ruleNode['name']); } if (trim($ruleNode['message']) !== '') { $rule->setMessage((string) $ruleNode['message']); } if (trim($ruleNode['externalInfoUrl']) !== '') { $rule->setExternalInfoUrl((string) $ruleNode['externalInfoUrl']); } foreach ($ruleNode->children() as $node) { if ($node->getName() === 'description') { $rule->setDescription((string) $node); } elseif ($node->getName() === 'example') { $rule->addExample((string) $node); } elseif ($node->getName() === 'priority') { $rule->setPriority((int) $node); } elseif ($node->getName() === 'properties') { $this->parsePropertiesNode($rule, $node); } } if ($rule->getPriority() <= $this->minimumPriority) { $ruleSet->addRule($rule); } }
/** * @param mixed $data * @param string $key * @param string $message */ public function handle($data, $key = null, $message = '') { if (RuleSet::getHandlers() === null) { RuleSet::attachHandler(new Handler\Exception()); // attach a default handler } foreach (RuleSet::getHandlers() as $handler) { call_user_func(array($handler, 'handle'), Rule::instance(), $data, $key, $message); } }