| @@ 280-311 (lines=32) @@ | ||
| 277 | /** |
|
| 278 | * {@inheritdoc} |
|
| 279 | */ |
|
| 280 | public function removeBinding(Uuid $uuid) |
|
| 281 | { |
|
| 282 | if (null === $this->json) { |
|
| 283 | $this->load(); |
|
| 284 | } |
|
| 285 | ||
| 286 | $uuidString = $uuid->toString(); |
|
| 287 | ||
| 288 | if (!isset($this->json['keysByUuid'][$uuidString])) { |
|
| 289 | return; |
|
| 290 | } |
|
| 291 | ||
| 292 | $key = $this->json['keysByUuid'][$uuidString]; |
|
| 293 | ||
| 294 | if (!isset($this->bindingsByKey[$key])) { |
|
| 295 | $this->loadBindingsForKey($key); |
|
| 296 | } |
|
| 297 | ||
| 298 | foreach ($this->bindingsByKey[$key] as $i => $binding) { |
|
| 299 | if ($binding->getUuid()->equals($uuid)) { |
|
| 300 | unset($this->bindingsByKey[$key][$i]); |
|
| 301 | } |
|
| 302 | } |
|
| 303 | ||
| 304 | $this->reindexBindingsForKey($key); |
|
| 305 | ||
| 306 | unset($this->json['keysByUuid'][$uuidString]); |
|
| 307 | ||
| 308 | $this->json['bindingsByKey'][$key] = serialize($this->bindingsByKey[$key]); |
|
| 309 | ||
| 310 | $this->flush(); |
|
| 311 | } |
|
| 312 | ||
| 313 | /** |
|
| 314 | * {@inheritdoc} |
|
| @@ 482-510 (lines=29) @@ | ||
| 479 | /** |
|
| 480 | * {@inheritdoc} |
|
| 481 | */ |
|
| 482 | protected function removeBindingsWithTypeNameThatMatch($typeName, Expression $expr) |
|
| 483 | { |
|
| 484 | if (null === $this->json) { |
|
| 485 | $this->load(); |
|
| 486 | } |
|
| 487 | ||
| 488 | if (!isset($this->json['keysByTypeName'][$typeName])) { |
|
| 489 | return; |
|
| 490 | } |
|
| 491 | ||
| 492 | $key = $this->json['keysByTypeName'][$typeName]; |
|
| 493 | ||
| 494 | if (!isset($this->bindingsByKey[$key])) { |
|
| 495 | $this->loadBindingsForKey($key); |
|
| 496 | } |
|
| 497 | ||
| 498 | foreach ($this->bindingsByKey[$key] as $i => $binding) { |
|
| 499 | if ($expr->evaluate($binding)) { |
|
| 500 | unset($this->bindingsByKey[$key][$i]); |
|
| 501 | unset($this->json['keysByUuid'][$binding->getUuid()->toString()]); |
|
| 502 | } |
|
| 503 | } |
|
| 504 | ||
| 505 | $this->reindexBindingsForKey($key); |
|
| 506 | ||
| 507 | $this->json['bindingsByKey'][$key] = serialize($this->bindingsByKey[$key]); |
|
| 508 | ||
| 509 | $this->flush(); |
|
| 510 | } |
|
| 511 | ||
| 512 | /** |
|
| 513 | * {@inheritdoc} |
|