home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-includes / Requests / Utility / CaseInsensitiveDictionary.php next >
Encoding:
PHP Script  |  2016-05-12  |  1.9 KB  |  104 lines

  1. <?php
  2. /**
  3.  * Case-insensitive dictionary, suitable for HTTP headers
  4.  *
  5.  * @package Requests
  6.  * @subpackage Utilities
  7.  */
  8.  
  9. /**
  10.  * Case-insensitive dictionary, suitable for HTTP headers
  11.  *
  12.  * @package Requests
  13.  * @subpackage Utilities
  14.  */
  15. class Requests_Utility_CaseInsensitiveDictionary implements ArrayAccess, IteratorAggregate {
  16.     /**
  17.      * Actual item data
  18.      *
  19.      * @var array
  20.      */
  21.     protected $data = array();
  22.  
  23.     /**
  24.      * Creates a case insensitive dictionary.
  25.      *
  26.      * @param array $data Dictionary/map to convert to case-insensitive
  27.      */
  28.     public function __construct(array $data = array()) {
  29.         foreach ($data as $key => $value) {
  30.             $this->offsetSet($key, $value);
  31.         }
  32.     }
  33.  
  34.     /**
  35.      * Check if the given item exists
  36.      *
  37.      * @param string $key Item key
  38.      * @return boolean Does the item exist?
  39.      */
  40.     public function offsetExists($key) {
  41.         $key = strtolower($key);
  42.         return isset($this->data[$key]);
  43.     }
  44.  
  45.     /**
  46.      * Get the value for the item
  47.      *
  48.      * @param string $key Item key
  49.      * @return string Item value
  50.      */
  51.     public function offsetGet($key) {
  52.         $key = strtolower($key);
  53.         if (!isset($this->data[$key])) {
  54.             return null;
  55.         }
  56.  
  57.         return $this->data[$key];
  58.     }
  59.  
  60.     /**
  61.      * Set the given item
  62.      *
  63.      * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
  64.      *
  65.      * @param string $key Item name
  66.      * @param string $value Item value
  67.      */
  68.     public function offsetSet($key, $value) {
  69.         if ($key === null) {
  70.             throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
  71.         }
  72.  
  73.         $key = strtolower($key);
  74.         $this->data[$key] = $value;
  75.     }
  76.  
  77.     /**
  78.      * Unset the given header
  79.      *
  80.      * @param string $key
  81.      */
  82.     public function offsetUnset($key) {
  83.         unset($this->data[strtolower($key)]);
  84.     }
  85.  
  86.     /**
  87.      * Get an iterator for the data
  88.      *
  89.      * @return ArrayIterator
  90.      */
  91.     public function getIterator() {
  92.         return new ArrayIterator($this->data);
  93.     }
  94.  
  95.     /**
  96.      * Get the headers as an array
  97.      *
  98.      * @return array Header data
  99.      */
  100.     public function getAll() {
  101.         return $this->data;
  102.     }
  103. }
  104.