diff --git a/src/Pecee/Http/Input/Input.php b/src/Pecee/Http/Input/Input.php index ae86bca..853e12f 100644 --- a/src/Pecee/Http/Input/Input.php +++ b/src/Pecee/Http/Input/Input.php @@ -267,29 +267,21 @@ class Input */ public function all(array $filter = null) { - $output = $_POST; + $output = $_GET; if ($this->request->getMethod() === 'post') { $contents = file_get_contents('php://input'); if (strpos(trim($contents), '{') === 0) { - $output = json_decode($contents, true); - if ($output === false) { - $output = []; + $post = json_decode($contents, true); + if ($post !== false) { + $output = array_merge($output, $post); } } } - $output = array_merge($_GET, $output); - - if ($filter !== null) { - $output = array_filter($output, function ($key) use ($filter) { - return (in_array($key, $filter) === true); - }, ARRAY_FILTER_USE_KEY); - } - - return $output; + return ($filter !== null) ? array_intersect_key($output, array_flip($filter)) : $output; } } \ No newline at end of file diff --git a/src/Pecee/Http/Response.php b/src/Pecee/Http/Response.php index 45226e9..5d25043 100644 --- a/src/Pecee/Http/Response.php +++ b/src/Pecee/Http/Response.php @@ -85,17 +85,17 @@ class Response /** * Json encode * @param array|\JsonSerializable $value - * @throws \InvalidArgumentException; + * @param int $options JSON options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR. + * @param int $dept JSON debt. + * @throws \InvalidArgumentException */ - public function json($value) + public function json($value, $options = null, $dept = 512) { - if (($value instanceof \JsonSerializable) === false && is_array($value) === false) { throw new \InvalidArgumentException('Invalid type for parameter "value". Must be of type array or object implementing the \JsonSerializable interface.'); } - - $this->header('Content-type: application/json'); - echo json_encode($value); + $this->header('Content-Type: application/json; charset=utf-8'); + echo json_encode($value, $options, $dept); exit(0); }