diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9ddbbad..8491a4e 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -6,9 +6,10 @@
-
-
-
+
+
+
+
@@ -285,6 +286,7 @@
+
@@ -424,7 +426,9 @@
-
+
+
+
@@ -504,6 +508,27 @@
+
+
+
+
+
+
+
+
diff --git a/src/Pecee/Http/Input/IInputItem.php b/src/Pecee/Http/Input/IInputItem.php
index cc5a4e0..b4ddef9 100644
--- a/src/Pecee/Http/Input/IInputItem.php
+++ b/src/Pecee/Http/Input/IInputItem.php
@@ -13,7 +13,7 @@ interface IInputItem
public function setName(string $name): self;
- public function getValue(): ?string;
+ public function getValue();
public function setValue(string $value): self;
diff --git a/src/Pecee/Http/Input/InputHandler.php b/src/Pecee/Http/Input/InputHandler.php
index ea6c6e8..662df21 100644
--- a/src/Pecee/Http/Input/InputHandler.php
+++ b/src/Pecee/Http/Input/InputHandler.php
@@ -171,14 +171,11 @@ class InputHandler
foreach ($array as $key => $value) {
// Handle array input
- if (\is_array($value) === false) {
- $list[$key] = new InputItem($key, $value);
- continue;
+ if (\is_array($value) === true) {
+ $value = $this->parseInputItem($value);
}
- $output = $this->parseInputItem($value);
-
- $list[$key] = $output;
+ $list[$key] = new InputItem($key, $value);
}
return $list;
@@ -222,19 +219,18 @@ class InputHandler
{
$input = $this->find($index, ...$methods);
- $output = [];
-
/* Handle collection */
if (\is_array($input) === true) {
+ $output = [];
/* @var $item InputItem */
foreach ($input as $item) {
- $output[] = $item->getValue();
+ $output[] = \is_array($item) ? $item : $item->getValue();
}
return (\count($output) === 0) ? $defaultValue : $output;
}
- return ($input === null || ($input !== null && trim($input->getValue()) === '')) ? $defaultValue : $input->getValue();
+ return ($input === null || (\is_string($input->getValue()) && trim($input->getValue()) === '')) ? $defaultValue : $input->getValue();
}
/**
@@ -354,4 +350,4 @@ class InputHandler
$this->file[$key] = $item;
}
-}
+}
\ No newline at end of file
diff --git a/src/Pecee/Http/Input/InputItem.php b/src/Pecee/Http/Input/InputItem.php
index 6c677b8..a6e0fd8 100644
--- a/src/Pecee/Http/Input/InputItem.php
+++ b/src/Pecee/Http/Input/InputItem.php
@@ -2,13 +2,16 @@
namespace Pecee\Http\Input;
-class InputItem implements IInputItem
+use Exception;
+use Traversable;
+
+class InputItem implements IInputItem, \IteratorAggregate
{
public $index;
public $name;
public $value;
- public function __construct(string $index, ?string $value = null)
+ public function __construct(string $index, $value = null)
{
$this->index = $index;
$this->value = $value;
@@ -53,10 +56,19 @@ class InputItem implements IInputItem
}
/**
- * @return string
+ * @return mixed
*/
- public function getValue(): ?string
+ public function getValue()
{
+ /*if(is_array($this->value) === true) {
+ $output = [];
+ foreach($this->value as $key => $val) {
+ $output[$key] = $val->getValue();
+ }
+
+ return $output;
+ }*/
+
return $this->value;
}
@@ -74,7 +86,12 @@ class InputItem implements IInputItem
public function __toString(): string
{
- return (string)$this->value;
+ $value = $this->getValue();
+ return (\is_array($value) === true) ? json_encode($value) : $value;
}
+ public function getIterator()
+ {
+ return new \ArrayIterator($this->getValue());
+ }
}
\ No newline at end of file
diff --git a/tests/Pecee/SimpleRouter/InputHandlerTest.php b/tests/Pecee/SimpleRouter/InputHandlerTest.php
index ae53ac6..9732c19 100644
--- a/tests/Pecee/SimpleRouter/InputHandlerTest.php
+++ b/tests/Pecee/SimpleRouter/InputHandlerTest.php
@@ -47,6 +47,7 @@ class InputHandlerTest extends \PHPUnit\Framework\TestCase
$objects = $handler->find('names');
+ $this->assertInstanceOf(\Pecee\Http\Input\InputItem::class, $objects);
$this->assertCount(4, $objects);
/* @var $object \Pecee\Http\Input\InputItem */
@@ -98,6 +99,7 @@ class InputHandlerTest extends \PHPUnit\Framework\TestCase
$objects = $handler->find('names');
+ $this->assertInstanceOf(\Pecee\Http\Input\InputItem::class, $objects);
$this->assertCount(4, $objects);
/* @var $object \Pecee\Http\Input\InputItem */