Exemplo n.º 1
0
 /**
  * Build HeaderBag from Server variables ($_SERVER).
  *
  * @param array $headers
  *
  * @return HeaderBag
  */
 public static function fromServer(array $headers)
 {
     $headerBag = new HeaderBag();
     foreach ($headers as $name => $values) {
         foreach ((array) $values as $value) {
             $parts = explode('-', str_replace('_', '-', strtolower($name)));
             $name = implode('-', array_map('ucfirst', $parts));
             $namespace = 'Borobudur\\Http\\Header';
             if (0 === strpos($name, 'Accept')) {
                 $namespace = sprintf('%s\\Accept', $namespace);
             } elseif (0 === strpos($name, 'Content')) {
                 $namespace = sprintf('%s\\Content', $namespace);
             }
             $class = sprintf('%s\\%sHeader', $namespace, str_replace('-', '', $name));
             if (class_exists($class)) {
                 /**
                  * @var HeaderInterface $class
                  */
                 $headerBag->set($class::fromString(sprintf('%s: %s', $name, $value)), true);
             } else {
                 $headerBag->set(new GenericHeader($name, $value), true);
             }
         }
     }
     return $headerBag;
 }
 public function testHeaderBag()
 {
     $header = new HeaderBag();
     $header->set(new ContentTypeHeader('text/html'));
     $header->set((new CacheControlHeader())->setNoCache());
     $this->assertTrue($header->has('Content-Type'));
     $this->assertSame(2, $header->count());
     $header->remove('Content-Type');
     $this->assertSame(1, $header->count());
 }
 /**
  * Set content type.
  *
  * @param string $contentType
  *
  * @return $this
  */
 public function setContentType($contentType)
 {
     $this->headers->set(new ContentTypeHeader($contentType));
     $this->contentType = $contentType;
     return $this;
 }