* @author Bruno Prieto Reis */ class NumberConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$element, $schema = null, ?JsonPointer $path = null, $i = null) { // Verify minimum if (isset($schema->exclusiveMinimum)) { if (isset($schema->minimum)) { if ($schema->exclusiveMinimum && $element <= $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'exclusiveMinimum', array('minimum' => $schema->minimum)); } elseif ($element < $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); } } else { $this->addError($path, 'Use of exclusiveMinimum requires presence of minimum', 'missingMinimum'); } } elseif (isset($schema->minimum) && $element < $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); } // Verify maximum if (isset($schema->exclusiveMaximum)) { if (isset($schema->maximum)) { if ($schema->exclusiveMaximum && $element >= $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'exclusiveMaximum', array('maximum' => $schema->maximum)); } elseif ($element > $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); } } else { $this->addError($path, 'Use of exclusiveMaximum requires presence of maximum', 'missingMaximum'); } } elseif (isset($schema->maximum) && $element > $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); } // Verify divisibleBy - Draft v3 if (isset($schema->divisibleBy) && $this->fmod($element, $schema->divisibleBy) != 0) { $this->addError($path, 'Is not divisible by ' . $schema->divisibleBy, 'divisibleBy', array('divisibleBy' => $schema->divisibleBy)); } // Verify multipleOf - Draft v4 if (isset($schema->multipleOf) && $this->fmod($element, $schema->multipleOf) != 0) { $this->addError($path, 'Must be a multiple of ' . $schema->multipleOf, 'multipleOf', array('multipleOf' => $schema->multipleOf)); } $this->checkFormat($element, $schema, $path, $i); } private function fmod($number1, $number2) { $modulus = ($number1 - round($number1 / $number2) * $number2); $precision = 0.0000000001; if (-$precision < $modulus && $modulus < $precision) { return 0.0; } return $modulus; } }__halt_compiler();----SIGNATURE:----AHaY4OI6h1wpe1IemtOxM8IpjA9kVGUYIh79wM8gmQ2c5TUzXRUJHCZEH8jMZqYdV4FAA/xX4hiKJpE1JXr0zlTrVq/q91Zhvpa+YK/2HSRarU1vya7/rlY4lGn2tfpTB/KHg9caxnTuP+QHgxDKGNak9Vbwmwbimwnhdf1ubg4rRqlWnh2J4ezpGN9DQf2fEj9hXZ0Igm+gi94+7UQmpO+DDxJEfeD8+WRUqnBOXf2J0PdY2qgjKcWkoKzTHhJE27pLzBCFcyP3ZSSPl8QJUZ2gumL/YLBnM5Zzvq4/3klxAcB+lv60IgBVuPLYAsDDJnK3KMIYetJ/H9flVGvspS4n9yu3iPPt075buwcpDouDyye1IiIY1CjnRKian7H+deSpZEpEOuzcSgDbG9RIK1GCWnA91B+nbO+c2l7Ol8b3uXYnbNEiyrKbT1qnBg19pzJRt9JYBZPheVIUP0/OydQPzdjk6S4sbKL3Onsyr17HZJ05mHmZbudQh9QTJEasKyXj1nWfKL/+96z1AX62hNDx34SdZHatCLrBcAy/4DzBAIDdgetf1TBQbw2n4NwSQSRv0on+Mbg778ORrCo1B+C23Y+bbDqFtkmvsz4n7ofJdDZt+UaSS1h9gzY97MQuZU9lU1Dhh6a2wB0CPPlvvHFs2TWEGO96BK5moVmRldA=----ATTACHMENT:----Mjk4NDg2NDY4MzczMDUyNiA1NzExNzYxMTAwNzQzMTczIDM3MDAzMzExNTA0NzE2ODA=