From 0ecd038e61ebda36d104a3d6b219f0dd3604d45f Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Fri, 28 Dec 2018 15:40:13 +0100 Subject: [PATCH] Make MinkParameters imitate PHP arrays --- src/Mink/MinkParameters.php | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/Mink/MinkParameters.php b/src/Mink/MinkParameters.php index b2f2c6c..c88510c 100644 --- a/src/Mink/MinkParameters.php +++ b/src/Mink/MinkParameters.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace FriendsOfBehat\SymfonyExtension\Mink; /** @final */ -class MinkParameters +class MinkParameters implements \Countable, \IteratorAggregate, \ArrayAccess { /** @var array */ private $minkParameters; @@ -15,13 +15,33 @@ class MinkParameters $this->minkParameters = $minkParameters; } - public function all(): array + public function getIterator(): \Traversable { - return $this->minkParameters; + return new \ArrayIterator($this->minkParameters); } - public function get(string $parameter) + public function offsetExists($offset): bool { - return $this->minkParameters[$parameter] ?? null; + return array_key_exists($offset, $this->minkParameters); + } + + public function offsetGet($offset) + { + return $this->minkParameters[$offset] ?? null; + } + + public function offsetSet($offset, $value): void + { + throw new \BadMethodCallException(sprintf('"%s" is immutable.', self::class)); + } + + public function offsetUnset($offset): void + { + throw new \BadMethodCallException(sprintf('"%s" is immutable.', self::class)); + } + + public function count(): int + { + return count($this->minkParameters); } }