setFieldName($fieldName); } if ($fieldValue) { $this->setFieldValue($fieldValue); } } /** * Set header name * * @param string $fieldName * @return GenericHeader * @throws Exception\InvalidArgumentException; */ public function setFieldName($fieldName) { if (!is_string($fieldName) || empty($fieldName)) { throw new Exception\InvalidArgumentException('Header name must be a string'); } // Pre-filter to normalize valid characters, change underscore to dash $fieldName = str_replace(' ', '-', ucwords(str_replace(array('_', '-'), ' ', $fieldName))); if (! HeaderName::isValid($fieldName)) { throw new Exception\InvalidArgumentException( 'Header name must be composed of printable US-ASCII characters, except colon.' ); } $this->fieldName = $fieldName; return $this; } public function getFieldName() { return $this->fieldName; } /** * Set header value * * @param string $fieldValue * @return GenericHeader * @throws Exception\InvalidArgumentException; */ public function setFieldValue($fieldValue) { $fieldValue = (string) $fieldValue; if (! HeaderWrap::canBeEncoded($fieldValue)) { throw new Exception\InvalidArgumentException( 'Header value must be composed of printable US-ASCII characters and valid folding sequences.' ); } $this->fieldValue = $fieldValue; $this->encoding = null; return $this; } public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { if (HeaderInterface::FORMAT_ENCODED === $format) { return HeaderWrap::wrap($this->fieldValue, $this); } return $this->fieldValue; } public function setEncoding($encoding) { $this->encoding = $encoding; return $this; } public function getEncoding() { if (! $this->encoding) { $this->encoding = Mime::isPrintable($this->fieldValue) ? 'ASCII' : 'UTF-8'; } return $this->encoding; } public function toString() { $name = $this->getFieldName(); if (empty($name)) { throw new Exception\RuntimeException('Header name is not set, use setFieldName()'); } $value = $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); return $name . ': ' . $value; } }