[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Case-insensitive dictionary, suitable for HTTP headers 4 * 5 * @package Requests\Utilities 6 */ 7 8 namespace WpOrg\Requests\Utility; 9 10 use ArrayAccess; 11 use ArrayIterator; 12 use IteratorAggregate; 13 use ReturnTypeWillChange; 14 use WpOrg\Requests\Exception; 15 16 /** 17 * Case-insensitive dictionary, suitable for HTTP headers 18 * 19 * @package Requests\Utilities 20 */ 21 class CaseInsensitiveDictionary implements ArrayAccess, IteratorAggregate { 22 /** 23 * Actual item data 24 * 25 * @var array 26 */ 27 protected $data = []; 28 29 /** 30 * Creates a case insensitive dictionary. 31 * 32 * @param array $data Dictionary/map to convert to case-insensitive 33 */ 34 public function __construct(array $data = []) { 35 foreach ($data as $offset => $value) { 36 $this->offsetSet($offset, $value); 37 } 38 } 39 40 /** 41 * Check if the given item exists 42 * 43 * @param string $offset Item key 44 * @return boolean Does the item exist? 45 */ 46 #[ReturnTypeWillChange] 47 public function offsetExists($offset) { 48 if (is_string($offset)) { 49 $offset = strtolower($offset); 50 } 51 52 return isset($this->data[$offset]); 53 } 54 55 /** 56 * Get the value for the item 57 * 58 * @param string $offset Item key 59 * @return string|null Item value (null if the item key doesn't exist) 60 */ 61 #[ReturnTypeWillChange] 62 public function offsetGet($offset) { 63 if (is_string($offset)) { 64 $offset = strtolower($offset); 65 } 66 67 if (!isset($this->data[$offset])) { 68 return null; 69 } 70 71 return $this->data[$offset]; 72 } 73 74 /** 75 * Set the given item 76 * 77 * @param string $offset Item name 78 * @param string $value Item value 79 * 80 * @throws \WpOrg\Requests\Exception On attempting to use dictionary as list (`invalidset`) 81 */ 82 #[ReturnTypeWillChange] 83 public function offsetSet($offset, $value) { 84 if ($offset === null) { 85 throw new Exception('Object is a dictionary, not a list', 'invalidset'); 86 } 87 88 if (is_string($offset)) { 89 $offset = strtolower($offset); 90 } 91 92 $this->data[$offset] = $value; 93 } 94 95 /** 96 * Unset the given header 97 * 98 * @param string $offset The key for the item to unset. 99 */ 100 #[ReturnTypeWillChange] 101 public function offsetUnset($offset) { 102 if (is_string($offset)) { 103 $offset = strtolower($offset); 104 } 105 106 unset($this->data[$offset]); 107 } 108 109 /** 110 * Get an iterator for the data 111 * 112 * @return \ArrayIterator 113 */ 114 #[ReturnTypeWillChange] 115 public function getIterator() { 116 return new ArrayIterator($this->data); 117 } 118 119 /** 120 * Get the headers as an array 121 * 122 * @return array Header data 123 */ 124 public function getAll() { 125 return $this->data; 126 } 127 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Thu Nov 21 08:20:01 2024 | Cross-referenced by PHPXref |