19 declare(strict_types=1);
54 return static fn(isGlobalScreenItem $item_one, isGlobalScreenItem $item_two):
int => 0;
59 return static fn(isGlobalScreenItem $item_one, isGlobalScreenItem $item_two):
int => 0;
62 public function add(isGlobalScreenItem $item): void
64 $serialize = $item->getProviderIdentification()->serialize();
65 if (0 < strlen($serialize)) {
66 $this->
raw[$serialize] = $item;
70 public function addMultiple(isGlobalScreenItem ...$items): void
72 foreach ($items as $item) {
79 if ($this->
raw->offsetExists($identification->serialize())) {
80 $item = $this->
raw->offsetGet($identification->serialize());
82 return $item ?? $this->
getLostItem($identification);
91 if ($this->filtered->offsetExists($identification->serialize())) {
92 $item = $this->filtered->offsetGet($identification->serialize());
95 return $item ?? $this->
getLostItem($identification);
100 $this->
raw->offsetUnset($identification->serialize());
107 return $this->filtered->offsetExists($identification->serialize());
110 public function has(): bool
112 return $this->
raw->count() > 0;
117 if (!isset($this->filtered)) {
120 if ($this->filters !== []) {
121 $filter_copy = isset($this->filtered) ? $this->filtered->getArrayCopy() : $this->
raw->getArrayCopy();
122 foreach ($this->filters as $filter) {
123 $filter_copy = array_filter($filter_copy, $filter);
125 $this->filtered->exchangeArray($filter_copy);
151 $to_walk = (array) $this->filtered->getArrayCopy();
152 array_walk($to_walk, $c);
158 $this->filters[] =
$c;
Interface IdentificationInterface.
existsInFilter(IdentificationInterface $identification)
addMultiple(isGlobalScreenItem ... $items)
getLostItem(IdentificationInterface $identification)
getSingleItemFromRaw(IdentificationInterface $identification)
add(isGlobalScreenItem $item)
getSingleItemFromFilter(IdentificationInterface $identification)