home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-includes / Requests / Response / Headers.php
Encoding:
PHP Script  |  2016-05-12  |  2.1 KB  |  99 lines

  1. <?php
  2. /**
  3.  * Case-insensitive dictionary, suitable for HTTP headers
  4.  *
  5.  * @package Requests
  6.  */
  7.  
  8. /**
  9.  * Case-insensitive dictionary, suitable for HTTP headers
  10.  *
  11.  * @package Requests
  12.  */
  13. class Requests_Response_Headers extends Requests_Utility_CaseInsensitiveDictionary {
  14.     /**
  15.      * Get the given header
  16.      *
  17.      * Unlike {@see self::getValues()}, this returns a string. If there are
  18.      * multiple values, it concatenates them with a comma as per RFC2616.
  19.      *
  20.      * Avoid using this where commas may be used unquoted in values, such as
  21.      * Set-Cookie headers.
  22.      *
  23.      * @param string $key
  24.      * @return string Header value
  25.      */
  26.     public function offsetGet($key) {
  27.         $key = strtolower($key);
  28.         if (!isset($this->data[$key])) {
  29.             return null;
  30.         }
  31.  
  32.         return $this->flatten($this->data[$key]);
  33.     }
  34.  
  35.     /**
  36.      * Set the given item
  37.      *
  38.      * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
  39.      *
  40.      * @param string $key Item name
  41.      * @param string $value Item value
  42.      */
  43.     public function offsetSet($key, $value) {
  44.         if ($key === null) {
  45.             throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
  46.         }
  47.  
  48.         $key = strtolower($key);
  49.  
  50.         if (!isset($this->data[$key])) {
  51.             $this->data[$key] = array();
  52.         }
  53.  
  54.         $this->data[$key][] = $value;
  55.     }
  56.  
  57.     /**
  58.      * Get all values for a given header
  59.      *
  60.      * @param string $key
  61.      * @return array Header values
  62.      */
  63.     public function getValues($key) {
  64.         $key = strtolower($key);
  65.         if (!isset($this->data[$key])) {
  66.             return null;
  67.         }
  68.  
  69.         return $this->data[$key];
  70.     }
  71.  
  72.     /**
  73.      * Flattens a value into a string
  74.      *
  75.      * Converts an array into a string by imploding values with a comma, as per
  76.      * RFC2616's rules for folding headers.
  77.      *
  78.      * @param string|array $value Value to flatten
  79.      * @return string Flattened value
  80.      */
  81.     public function flatten($value) {
  82.         if (is_array($value)) {
  83.             $value = implode(',', $value);
  84.         }
  85.  
  86.         return $value;
  87.     }
  88.  
  89.     /**
  90.      * Get an iterator for the data
  91.      *
  92.      * Converts the internal
  93.      * @return ArrayIterator
  94.      */
  95.     public function getIterator() {
  96.         return new Requests_Utility_FilteredIterator($this->data, array($this, 'flatten'));
  97.     }
  98. }
  99.