setValueDelimiter($delimiter); $this->explodeLimit = ($explodeLimit === null) ? null : (int) $explodeLimit; } /** * Sets the delimiter string that the values will be split upon * * @param string $delimiter * @return self */ private function setValueDelimiter($delimiter) { if (!is_string($delimiter)) { throw new Exception\InvalidArgumentException(sprintf( '%s expects Delimiter to be string, %s provided instead', __METHOD__, is_object($delimiter) ? get_class($delimiter) : gettype($delimiter) )); } if (empty($delimiter)) { throw new Exception\InvalidArgumentException('Delimiter cannot be empty.'); } $this->valueDelimiter = $delimiter; } /** * {@inheritDoc} * * Split a string by delimiter * * @param string|null $value * * @return string[] * * @throws Exception\InvalidArgumentException */ public function hydrate($value) { if (null === $value) { return array(); } if (!(is_string($value) || is_numeric($value))) { throw new Exception\InvalidArgumentException(sprintf( '%s expects argument 1 to be string, %s provided instead', __METHOD__, is_object($value) ? get_class($value) : gettype($value) )); } if ($this->explodeLimit !== null) { return explode($this->valueDelimiter, $value, $this->explodeLimit); } return explode($this->valueDelimiter, $value); } /** * {@inheritDoc} * * Join array elements with delimiter * * @param string[] $value The original value. * * @return string|null */ public function extract($value) { if (!is_array($value)) { throw new Exception\InvalidArgumentException(sprintf( '%s expects argument 1 to be array, %s provided instead', __METHOD__, is_object($value) ? get_class($value) : gettype($value) )); } return empty($value) ? null : implode($this->valueDelimiter, $value); } }