Ejemplo n.º 1
0
 /**
  * Merges one header values into another
  * @param \Nimbles\Core\Http\Header $header
  * @return void
  * @throws \Nimbles\Http\Header\Exception\InvalidHeaderName
  */
 public function merge(Header $header)
 {
     if ($this->getName() !== $header->getName()) {
         throw new Header\Exception\InvalidHeaderName('Cannot merge headers of different name');
     }
     $values = $header->getValue();
     // for header to create an array
     foreach ($header->_values as $value) {
         $this->setValue($value, true);
     }
 }
Ejemplo n.º 2
0
 /**
  * Sets a header
  *
  * @param string|\Nimbles\Http\Header             $name
  * @param string|\Nimbles\Http\Header|array|null  $value
  * @param bool                               $append
  * @return \Nimbles\Http\Header\Collection
  */
 public function setHeader($name, $value = null, $append = false)
 {
     $append = (bool) $append;
     if (is_array($name) || $name instanceof \ArrayObject) {
         foreach ($name as $index => $header) {
             if (is_string($index)) {
                 $this->setHeader($index, $header);
             } else {
                 $this->setHeader($header);
             }
         }
     } else {
         if ($name instanceof Header) {
             $header = $name;
             $name = $header->getName();
             if ($append && $this->offsetExists($name)) {
                 $this[$name]->merge($header);
             } else {
                 $this[$name] = $header;
             }
         } else {
             if (is_string($name)) {
                 if ($value instanceof Header) {
                     $name = $value->getName();
                     // sync to the headers name
                     $value = $value->getValue();
                     // converts to null, string or array
                 }
                 if (is_string($value) || null === $value) {
                     $value = array($value);
                 }
                 foreach ($value as $string) {
                     $header = Header::factory($name, $string);
                     $name = $header->getName();
                     if ($append && array_key_exists($name, $this)) {
                         $this[$name]->merge($header);
                     } else {
                         $this[$name] = $header;
                     }
                 }
             }
         }
     }
     return $this;
 }