/** * Validates a parameter * * @param string $name * @param array $options * @param string|array $value */ public function validate($name, array $options, $value) { if ($options['array'] && !is_array($value)) { throw new \InvalidArgumentException(sprintf('Parameter "%s" must be an array', $name)); } foreach ((array) $value as $itemValue) { $regExp = isset($options['reg_exp']) ? $options['reg_exp'] : $this->parameterTypeChain->getParameterType($options['type'])->getDefaultRegExp(); if (1 !== preg_match(sprintf('/%s/', $regExp), $itemValue)) { throw new \InvalidArgumentException(sprintf('Invalid value for parameter "%s"', $name)); } } }
/** * Returns casted default value * * @param array $options * * @return mixed */ public function getDefaultValue(array $options) { $parameterType = $this->parameterTypeChain->getParameterType($options['type']); if ($options['array']) { $language = new ExpressionLanguage(); $defaultValue = $language->evaluate($options['default']); if (is_array($defaultValue)) { foreach ($defaultValue as &$subValue) { $subValue = $parameterType->castValue($subValue); } } return $defaultValue; } else { return $parameterType->castValue($options['default']); } }