/** * Format all added parameters as described in the parameter definition (cast to string, truncate length) * * @param Dataset $dataset */ public function formatParams(Dataset $dataset) { $paramDefinition = $this->getParamDefinition(); foreach ($dataset as $key => $value) { $value = trim($value); is_numeric($value) && settype($value, 'string'); if (isset($paramDefinition[$key])) { if ($this->getParamValueLength($value) > $paramDefinition[$key]['length']) { $value = substr($value, 0, $paramDefinition[$key]['length']); } } if (isset($paramDefinition[$key]['mb_str_pad'])) { $value = StringHelper::mbStringPad($value, $paramDefinition[$key]['length'], isset($paramDefinition[$key]['padChar']) ? $paramDefinition[$key]['padChar'] : ' ', $paramDefinition[$key]['pad'], $this->getCharset()); } elseif (isset($paramDefinition[$key]['format'])) { $value = sprintf($paramDefinition[$key]['format'], $value); } if ($this->getCharset() !== self::DEFAULT_CHARSET) { $value = iconv(self::DEFAULT_CHARSET, $this->getCharset() . '//TRANSLIT', $value); } $dataset->offsetSet($key, $value); // remove empty values if (!isset($value)) { $dataset->offsetUnset($key); } } }