ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
TMBOY
Date:
Tue Jul 18 16:27:22 2017 +0800
Revision:
44:c1d8923072ba
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TMBOY 44:c1d8923072ba 1 <?php
TMBOY 44:c1d8923072ba 2
TMBOY 44:c1d8923072ba 3 /*
TMBOY 44:c1d8923072ba 4 * This file is part of the JsonSchema package.
TMBOY 44:c1d8923072ba 5 *
TMBOY 44:c1d8923072ba 6 * For the full copyright and license information, please view the LICENSE
TMBOY 44:c1d8923072ba 7 * file that was distributed with this source code.
TMBOY 44:c1d8923072ba 8 */
TMBOY 44:c1d8923072ba 9
TMBOY 44:c1d8923072ba 10 namespace JsonSchema\Constraints;
TMBOY 44:c1d8923072ba 11 use JsonSchema\Entity\JsonPointer;
TMBOY 44:c1d8923072ba 12
TMBOY 44:c1d8923072ba 13 /**
TMBOY 44:c1d8923072ba 14 * The EnumConstraint Constraints, validates an element against a given set of possibilities
TMBOY 44:c1d8923072ba 15 *
TMBOY 44:c1d8923072ba 16 * @author Robert Schönthal <seroscho@googlemail.com>
TMBOY 44:c1d8923072ba 17 * @author Bruno Prieto Reis <bruno.p.reis@gmail.com>
TMBOY 44:c1d8923072ba 18 */
TMBOY 44:c1d8923072ba 19 class EnumConstraint extends Constraint
TMBOY 44:c1d8923072ba 20 {
TMBOY 44:c1d8923072ba 21 /**
TMBOY 44:c1d8923072ba 22 * {@inheritDoc}
TMBOY 44:c1d8923072ba 23 */
TMBOY 44:c1d8923072ba 24 public function check($element, $schema = null, JsonPointer $path = null, $i = null)
TMBOY 44:c1d8923072ba 25 {
TMBOY 44:c1d8923072ba 26 // Only validate enum if the attribute exists
TMBOY 44:c1d8923072ba 27 if ($element instanceof UndefinedConstraint && (!isset($schema->required) || !$schema->required)) {
TMBOY 44:c1d8923072ba 28 return;
TMBOY 44:c1d8923072ba 29 }
TMBOY 44:c1d8923072ba 30 $type = gettype($element);
TMBOY 44:c1d8923072ba 31
TMBOY 44:c1d8923072ba 32 foreach ($schema->enum as $enum) {
TMBOY 44:c1d8923072ba 33 $enumType = gettype($enum);
TMBOY 44:c1d8923072ba 34 if (($this->factory->getCheckMode() & self::CHECK_MODE_TYPE_CAST) && $type == "array" && $enumType == "object") {
TMBOY 44:c1d8923072ba 35 if ((object)$element == $enum) {
TMBOY 44:c1d8923072ba 36 return;
TMBOY 44:c1d8923072ba 37 }
TMBOY 44:c1d8923072ba 38 }
TMBOY 44:c1d8923072ba 39
TMBOY 44:c1d8923072ba 40 if ($type === gettype($enum)) {
TMBOY 44:c1d8923072ba 41 if ($type == "object") {
TMBOY 44:c1d8923072ba 42 if ($element == $enum) {
TMBOY 44:c1d8923072ba 43 return;
TMBOY 44:c1d8923072ba 44 }
TMBOY 44:c1d8923072ba 45 } elseif ($element === $enum) {
TMBOY 44:c1d8923072ba 46 return;
TMBOY 44:c1d8923072ba 47 }
TMBOY 44:c1d8923072ba 48 }
TMBOY 44:c1d8923072ba 49 }
TMBOY 44:c1d8923072ba 50
TMBOY 44:c1d8923072ba 51 $this->addError($path, "Does not have a value in the enumeration " . json_encode($schema->enum), 'enum', array('enum' => $schema->enum,));
TMBOY 44:c1d8923072ba 52 }
TMBOY 44:c1d8923072ba 53 }