[ Index ] |
PHP Cross Reference of phpBB-3.3.12-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * @package s9e\TextFormatter 5 * @copyright Copyright (c) 2010-2022 The s9e authors 6 * @license http://www.opensource.org/licenses/mit-license.php The MIT License 7 */ 8 namespace s9e\TextFormatter\Configurator\Collections; 9 10 use InvalidArgumentException; 11 12 class NormalizedList extends NormalizedCollection 13 { 14 /** 15 * Add (append) a value to this list 16 * 17 * Alias for append(). Overrides NormalizedCollection::add() 18 * 19 * @param mixed $value Original value 20 * @param null $void Unused 21 * @return mixed Normalized value 22 */ 23 public function add($value, $void = null) 24 { 25 return $this->append($value); 26 } 27 28 /** 29 * Append a value to this list 30 * 31 * @param mixed $value Original value 32 * @return mixed Normalized value 33 */ 34 public function append($value) 35 { 36 $value = $this->normalizeValue($value); 37 38 $this->items[] = $value; 39 40 return $value; 41 } 42 43 /** 44 * Delete a value from this list and remove gaps in keys 45 * 46 * NOTE: parent::offsetUnset() maps to $this->delete() so this method covers both usages 47 * 48 * @param string $key 49 * @return void 50 */ 51 public function delete($key) 52 { 53 parent::delete($key); 54 55 // Reindex the array to eliminate any gaps 56 $this->items = array_values($this->items); 57 } 58 59 /** 60 * Insert a value at an arbitrary 0-based position 61 * 62 * @param integer $offset 63 * @param mixed $value 64 * @return mixed Normalized value 65 */ 66 public function insert($offset, $value) 67 { 68 $offset = $this->normalizeKey($offset); 69 $value = $this->normalizeValue($value); 70 71 // Insert the value at given offset. We put the value into an array so that array_splice() 72 // won't insert it as multiple elements if it happens to be an array 73 array_splice($this->items, $offset, 0, [$value]); 74 75 return $value; 76 } 77 78 /** 79 * Ensure that the key is a valid offset 80 * 81 * Negative values count from the end of the list 82 * 83 * @param mixed $key 84 * @return integer 85 */ 86 public function normalizeKey($key) 87 { 88 $normalizedKey = filter_var( 89 (preg_match('(^-\\d+$)D', $key)) ? count($this->items) + $key : $key, 90 FILTER_VALIDATE_INT, 91 [ 92 'options' => [ 93 'min_range' => 0, 94 'max_range' => count($this->items) 95 ] 96 ] 97 ); 98 99 if ($normalizedKey === false) 100 { 101 throw new InvalidArgumentException("Invalid offset '" . $key . "'"); 102 } 103 104 return $normalizedKey; 105 } 106 107 /** 108 * Custom offsetSet() implementation to allow assignment with a null offset to append to the 109 * chain 110 * 111 * @param mixed $offset 112 * @param mixed $value 113 * @return void 114 */ 115 public function offsetSet($offset, $value): void 116 { 117 if ($offset === null) 118 { 119 // $list[] = 'foo' maps to $list->append('foo') 120 $this->append($value); 121 } 122 else 123 { 124 // Use the default implementation 125 parent::offsetSet($offset, $value); 126 } 127 } 128 129 /** 130 * Prepend a value to this list 131 * 132 * @param mixed $value 133 * @return mixed Normalized value 134 */ 135 public function prepend($value) 136 { 137 $value = $this->normalizeValue($value); 138 139 array_unshift($this->items, $value); 140 141 return $value; 142 } 143 144 /** 145 * Remove all items matching given value 146 * 147 * @param mixed $value Original value 148 * @return integer Number of items removed 149 */ 150 public function remove($value) 151 { 152 $keys = array_keys($this->items, $this->normalizeValue($value)); 153 foreach ($keys as $k) 154 { 155 unset($this->items[$k]); 156 } 157 158 $this->items = array_values($this->items); 159 160 return count($keys); 161 } 162 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Jun 23 12:25:44 2024 | Cross-referenced by PHPXref 0.7.1 |