@@ 274-301 (lines=28) @@ | ||
271 | /** |
|
272 | * {@inheritdoc} |
|
273 | */ |
|
274 | public function removeBinding(Uuid $uuid) |
|
275 | { |
|
276 | $uuidString = $uuid->toString(); |
|
277 | ||
278 | if (!isset($this->keysByUuid[$uuidString])) { |
|
279 | return; |
|
280 | } |
|
281 | ||
282 | $key = $this->keysByUuid[$uuidString]; |
|
283 | ||
284 | if (!isset($this->bindingsByKey[$key])) { |
|
285 | $this->loadBindingsForKey($key); |
|
286 | } |
|
287 | ||
288 | foreach ($this->bindingsByKey[$key] as $i => $binding) { |
|
289 | if ($binding->getUuid()->equals($uuid)) { |
|
290 | unset($this->bindingsByKey[$key][$i]); |
|
291 | } |
|
292 | } |
|
293 | ||
294 | // Reindex array |
|
295 | $this->bindingsByKey[$key] = array_values($this->bindingsByKey[$key]); |
|
296 | ||
297 | unset($this->keysByUuid[$uuidString]); |
|
298 | ||
299 | $this->store->set('b:'.$key, $this->bindingsByKey[$key]); |
|
300 | $this->store->set('::keysByUuid', $this->keysByUuid); |
|
301 | } |
|
302 | ||
303 | /** |
|
304 | * {@inheritdoc} |
|
@@ 448-472 (lines=25) @@ | ||
445 | /** |
|
446 | * {@inheritdoc} |
|
447 | */ |
|
448 | protected function removeBindingsWithTypeNameThatMatch($typeName, Expression $expr) |
|
449 | { |
|
450 | if (!isset($this->keysByTypeName[$typeName])) { |
|
451 | return; |
|
452 | } |
|
453 | ||
454 | $key = $this->keysByTypeName[$typeName]; |
|
455 | ||
456 | if (!isset($this->bindingsByKey[$key])) { |
|
457 | $this->loadBindingsForKey($key); |
|
458 | } |
|
459 | ||
460 | foreach ($this->bindingsByKey[$key] as $i => $binding) { |
|
461 | if ($expr->evaluate($binding)) { |
|
462 | unset($this->bindingsByKey[$key][$i]); |
|
463 | unset($this->keysByUuid[$binding->getUuid()->toString()]); |
|
464 | } |
|
465 | } |
|
466 | ||
467 | // Reindex array |
|
468 | $this->bindingsByKey[$key] = array_values($this->bindingsByKey[$key]); |
|
469 | ||
470 | $this->store->set('b:'.$key, $this->bindingsByKey[$key]); |
|
471 | $this->store->set('::keysByUuid', $this->keysByUuid); |
|
472 | } |
|
473 | ||
474 | /** |
|
475 | * {@inheritdoc} |