Mercurial > hg > isophonics-drupal-site
comparison vendor/sebastian/recursion-context/src/Context.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | 4c8ae668cc8c |
children |
comparison
equal
deleted
inserted
replaced
13:5fb285c0d0e3 | 14:1fec387a4317 |
---|---|
90 | 90 |
91 if ($key !== false) { | 91 if ($key !== false) { |
92 return $key; | 92 return $key; |
93 } | 93 } |
94 | 94 |
95 $key = count($this->arrays); | |
95 $this->arrays[] = &$array; | 96 $this->arrays[] = &$array; |
96 | 97 |
97 return count($this->arrays) - 1; | 98 if (!isset($array[PHP_INT_MAX]) && !isset($array[PHP_INT_MAX - 1])) { |
99 $array[] = $key; | |
100 $array[] = $this->objects; | |
101 } else { /* cover the improbable case too */ | |
102 do { | |
103 $key = random_int(PHP_INT_MIN, PHP_INT_MAX); | |
104 } while (isset($array[$key])); | |
105 | |
106 $array[$key] = $key; | |
107 | |
108 do { | |
109 $key = random_int(PHP_INT_MIN, PHP_INT_MAX); | |
110 } while (isset($array[$key])); | |
111 | |
112 $array[$key] = $this->objects; | |
113 } | |
114 | |
115 return $key; | |
98 } | 116 } |
99 | 117 |
100 /** | 118 /** |
101 * @param object $object | 119 * @param object $object |
102 * | 120 * |
116 * | 134 * |
117 * @return int|false | 135 * @return int|false |
118 */ | 136 */ |
119 private function containsArray(array &$array) | 137 private function containsArray(array &$array) |
120 { | 138 { |
121 $keys = array_keys($this->arrays, $array, true); | 139 $end = array_slice($array, -2); |
122 $hash = '_Key_' . microtime(true); | |
123 | 140 |
124 foreach ($keys as $key) { | 141 return isset($end[1]) && $end[1] === $this->objects ? $end[0] : false; |
125 $this->arrays[$key][$hash] = $hash; | |
126 | |
127 if (isset($array[$hash]) && $array[$hash] === $hash) { | |
128 unset($this->arrays[$key][$hash]); | |
129 | |
130 return $key; | |
131 } | |
132 | |
133 unset($this->arrays[$key][$hash]); | |
134 } | |
135 | |
136 return false; | |
137 } | 142 } |
138 | 143 |
139 /** | 144 /** |
140 * @param object $value | 145 * @param object $value |
141 * | 146 * |
147 return spl_object_hash($value); | 152 return spl_object_hash($value); |
148 } | 153 } |
149 | 154 |
150 return false; | 155 return false; |
151 } | 156 } |
157 | |
158 public function __destruct() | |
159 { | |
160 foreach ($this->arrays as &$array) { | |
161 if (is_array($array)) { | |
162 array_pop($array); | |
163 array_pop($array); | |
164 } | |
165 } | |
166 } | |
152 } | 167 } |