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