cast = $cast; $this->func = $this->getCastFunction($cast); } /** * @inheritDoc */ public function enter(\Opis\JsonSchema\ValidationContext $context) { $currentType = $context->currentDataType(); if ($currentType !== null && \Opis\JsonSchema\Helper::jsonTypeMatches($currentType, $this->cast)) { // Cast not needed return $this; } unset($currentType); $currentData = $context->currentData(); $context->setCurrentData(($this->func)($currentData)); return $currentData; } /** * @inheritDoc */ public function leave(\Opis\JsonSchema\ValidationContext $context, $data): void { if ($data !== $this) { $context->setCurrentData($data); } } /** * @param string $type * @return callable */ protected function getCastFunction(string $type): callable { $f = 'toNull'; switch ($type) { case 'integer': $f = 'toInteger'; break; case 'number': $f = 'toNumber'; break; case 'string': $f = 'toString'; break; case 'array': $f = 'toArray'; break; case 'object': $f = 'toObject'; break; case 'boolean': $f = 'toBoolean'; break; } return [$this, $f]; } /** * @param $value * @return int|null */ public function toInteger($value): ?int { if ($value === null) { return 0; } return is_scalar($value) ? intval($value) : null; } /** * @param $value * @return float|null */ public function toNumber($value): ?float { if ($value === null) { return 0.0; } return is_scalar($value) ? floatval($value) : null; } /** * @param $value * @return string|null */ public function toString($value): ?string { if ($value === null) { return ''; } if (is_scalar($value)) { return (string) $value; } return null; } /** * @param $value * @return array|null */ public function toArray($value): ?array { if ($value === null) { return []; } if (is_scalar($value)) { return [$value]; } if (is_array($value)) { return array_values($value); } if (is_object($value)) { return array_values(get_object_vars($value)); } return null; } /** * @param $value * @return object|null */ public function toObject($value): ?object { if (is_object($value) || is_array($value)) { return (object) $value; } return null; } /** * @param $value * @return bool */ public function toBoolean($value): bool { if ($value === null) { return false; } if (is_string($value)) { return !($value === ''); } if (is_object($value)) { return count(get_object_vars($value)) > 0; } return boolval($value); } } __halt_compiler();----SIGNATURE:----cUbo0G0pzMLStbhaNaNevliXyqYpB8dbOke7pkP5YAqtUOB/Yaf3jLglKDcJIT2gHCDOZfozEAfaq8xDn6GdwEF9dHrFtA2Q7nSLp1hgyngukBg0YhYR4LP8BQD5RR1/5GI46tBE6ajhfXMcXD03J0OdTWX8lkP1R3D5o4zz5jlxW5Q3AjdCkfe7plnqb7MrS4z2TFwUhztOZ6fZJKY8ShWd8ESkkML6SaWn8DorUv7Kk6oSu/ZpdPpXpcdkiSP/GD640QO4fDKlhO2sm9bGHn4+A5mvDWGJgXkqBT+MHv8MgCQ2ngHv7u+mt6IfItQU80w9ihMP4433b3Z/T1EuE248MldHhE2RreabtH7DJGFtYnbIyJm0Cr7QF/rRTUh0iKgYHkkzSrGstsN3y2UxAqAfchHMG3EGBkSkTDXqQLdVGCt1s3yK7Ai+CdwmhLooPpzC0DwvB1F853zyS7PeH5dnWKpmUnZ70JxYxgbBvlIFxWIGF171ww8WkOemoaPqTWeENfFffIDjb/aQrsWiBc73UBl3/sCSVQPebOfAG6AHzG0GSEwtqfzlZ9fOGSfMCWs5TX+faQSka90+mpVewVuJ0WcMZzyIHr5B5CoPQhXpBrNAT8HdBGz9kh6nTnBEEEhe1Ayl1pOrnWCvqZjU4MYEFAHNM7rswIdhhxQ4G5k=----ATTACHMENT:----MzgxNDkxNzg3MTk5OTc0MyA3NDgzNzEyMjAzODIxNzYxIDI5OTIzODM1NDA1NDA5MDU=