From 0d6326dfbb4315b18921a76f33bfdc8f32c51fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Tue, 18 May 2021 18:00:18 +0200 Subject: [PATCH] InputHandler optimisations. - InputItem can now be used like array (for example: input()->get('items')[0]) if value is array. - Changed default-value parameter for get, post, file can now be mixed to allow object as return-type. --- src/Pecee/Http/Input/InputHandler.php | 12 ++++++------ src/Pecee/Http/Input/InputItem.php | 28 ++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/Pecee/Http/Input/InputHandler.php b/src/Pecee/Http/Input/InputHandler.php index 96f41e7..aa54c6d 100644 --- a/src/Pecee/Http/Input/InputHandler.php +++ b/src/Pecee/Http/Input/InputHandler.php @@ -308,10 +308,10 @@ class InputHandler * Find post-value by index or return default value. * * @param string $index - * @param string|null $defaultValue + * @param mixed|null $defaultValue * @return InputItem|array|string|null */ - public function post(string $index, ?string $defaultValue = null) + public function post(string $index, $defaultValue = null) { return $this->post[$index] ?? $defaultValue; } @@ -320,10 +320,10 @@ class InputHandler * Find file by index or return default value. * * @param string $index - * @param string|null $defaultValue + * @param mixed|null $defaultValue * @return InputFile|array|string|null */ - public function file(string $index, ?string $defaultValue = null) + public function file(string $index, $defaultValue = null) { return $this->file[$index] ?? $defaultValue; } @@ -332,10 +332,10 @@ class InputHandler * Find parameter/query-string by index or return default value. * * @param string $index - * @param string|null $defaultValue + * @param mixed|null $defaultValue * @return InputItem|array|string|null */ - public function get(string $index, ?string $defaultValue = null) + public function get(string $index, $defaultValue = null) { return $this->get[$index] ?? $defaultValue; } diff --git a/src/Pecee/Http/Input/InputItem.php b/src/Pecee/Http/Input/InputItem.php index 85ae93d..ebb4bb3 100644 --- a/src/Pecee/Http/Input/InputItem.php +++ b/src/Pecee/Http/Input/InputItem.php @@ -2,10 +2,11 @@ namespace Pecee\Http\Input; +use ArrayAccess; use ArrayIterator; use IteratorAggregate; -class InputItem implements IInputItem, IteratorAggregate +class InputItem implements ArrayAccess, IInputItem, IteratorAggregate { public $index; public $name; @@ -75,9 +76,34 @@ class InputItem implements IInputItem, IteratorAggregate return $this; } + public function offsetExists($offset): bool + { + return isset($this->value[$offset]); + } + + public function offsetGet($offset) + { + if ($this->offsetExists($offset) === true) { + return $this->value[$offset]; + } + + return null; + } + + public function offsetSet($offset, $value): void + { + $this->value[$offset] = $value; + } + + public function offsetUnset($offset): void + { + unset($this->data[$offset]); + } + public function __toString(): string { $value = $this->getValue(); + return (is_array($value) === true) ? json_encode($value) : $value; }