From 2224131cd1ae9e7477b7b79c5c1ecc9b3a2ecc7a Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Fri, 22 Aug 2025 16:03:55 +0200 Subject: [PATCH] Ensure PHP 8.5 compatibility --- CHANGELOG.md | 4 ++++ src/Elements.php | 18 ++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fdd7bf2..105cd5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 2.30 +- Ensure compatibility with PHP 8.5 + +## 2.30 + - Deprecate option `title` from `Polygon`, `Polyline`, `Rectangle` and `Circle` in favor of `infoWindow` ## 2.29.0 diff --git a/src/Elements.php b/src/Elements.php index 6dee193..c68876c 100644 --- a/src/Elements.php +++ b/src/Elements.php @@ -27,18 +27,18 @@ abstract class Elements ) { $this->elements = new \SplObjectStorage(); foreach ($elements as $element) { - $this->elements->attach($element); + $this->add($element); } } public function add(Element $element): static { - $this->elements->attach($element, $element->id ?? $this->elements->getHash($element)); + $this->elements[$element] = $element->id ?? $this->elements->getHash($element); return $this; } - private function getElement(string $id): ?Element + private function getElementById(string $id): ?Element { foreach ($this->elements as $element) { if ($element->id === $id) { @@ -52,15 +52,13 @@ abstract class Elements public function remove(Element|string $elementOrId): static { if (\is_string($elementOrId)) { - $elementOrId = $this->getElement($elementOrId); + $element = $this->getElementById($elementOrId); + } else { + $element = $elementOrId; } - if (null === $elementOrId) { - return $this; - } - - if ($this->elements->contains($elementOrId)) { - $this->elements->detach($elementOrId); + if (null !== $element && $this->elements->offsetExists($element)) { + unset($this->elements[$element]); } return $this;