public static function validateArrayOfStructure(Context $context, ArrayParser $nestedParser) { if (!is_array($context->value)) { return Strings::sprintf('Invalid value for parameter %key. Expected array.', array('key' => $context->printableKey)); } $success = TRUE; foreach ($context->value as $k => $v) { $key = $context->absoluteKey; $key[] = $k; if (!$nestedParser->parseContext($context, $key)) { $success = FALSE; } } return $success; }
public function parseContext(Context $context, $baseKey = array()) { $success = TRUE; $oldBaseKey = $context->baseKey; $oldRule = $context->rule; $context->baseKey = $baseKey; $context->setRule(); $keys = is_array($context->value) ? array_flip(array_keys($context->value)) : array(); foreach ($this as $k => $rules) { unset($keys[$k]); if (!$rules->parse($context)) { $success = FALSE; } } foreach ($keys as $k => $v) { $success = FALSE; $key = $baseKey; $key[] = $k; $context->errors[] = array($key, Strings::sprintf('Unexpected parameter %key.', array('key' => $context->getPrintableKey($key)))); } $context->baseKey = $oldBaseKey; $context->rule = $oldRule; return $success; }
/** * Writes formatted string * * @param string */ function writef($message, $arguments = array()) { $allArguments = $arguments; foreach ($this->presets as $k => $v) { if (!array_key_exists($k, $allArguments)) { $allArguments[$k] = $this->flags & self::NO_COLORS ? '' : $v; } } return $this->write(Strings::sprintf($message, $allArguments)); }