From 8579136b0f9f5bde26d8c927c66900e837f5729c Mon Sep 17 00:00:00 2001 From: George Hanson Date: Wed, 4 Oct 2017 15:35:17 +0100 Subject: [PATCH 1/5] Refactor resolve method to make more readable --- src/Illuminate/Http/Resources/Json/Resource.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Illuminate/Http/Resources/Json/Resource.php b/src/Illuminate/Http/Resources/Json/Resource.php index 671b81e678f4..0233558566b6 100644 --- a/src/Illuminate/Http/Resources/Json/Resource.php +++ b/src/Illuminate/Http/Resources/Json/Resource.php @@ -91,12 +91,12 @@ public function resolve($request = null) $request = $request ?: Container::getInstance()->make('request') ); - if (is_array($data)) { - $data = $data; - } elseif ($data instanceof Arrayable || $data instanceof Collection) { - $data = $data->toArray(); - } elseif ($data instanceof JsonSerializable) { - $data = $data->jsonSerialize(); + if ($data instanceof Arrayable || $data instanceof Collection) { + return $this->filter((array) $data->toArray()); + } + + if ($data instanceof JsonSerializable) { + return $this->filter((array) $data->jsonSerialize()); } return $this->filter((array) $data); From f6ee011faf40c7b6101fd8486aa60b77ee7b6f4e Mon Sep 17 00:00:00 2001 From: George Hanson Date: Wed, 4 Oct 2017 15:57:49 +0100 Subject: [PATCH 2/5] Remove Collection check, remove casting it to an array --- src/Illuminate/Http/Resources/Json/Resource.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Illuminate/Http/Resources/Json/Resource.php b/src/Illuminate/Http/Resources/Json/Resource.php index 0233558566b6..bbc0ae52ae72 100644 --- a/src/Illuminate/Http/Resources/Json/Resource.php +++ b/src/Illuminate/Http/Resources/Json/Resource.php @@ -91,15 +91,15 @@ public function resolve($request = null) $request = $request ?: Container::getInstance()->make('request') ); - if ($data instanceof Arrayable || $data instanceof Collection) { - return $this->filter((array) $data->toArray()); + if ($data instanceof Arrayable) { + return $this->filter($data->toArray()); } if ($data instanceof JsonSerializable) { - return $this->filter((array) $data->jsonSerialize()); + return $this->filter($data->jsonSerialize()); } - return $this->filter((array) $data); + return $this->filter($data); } /** From eb501319d3b1ff8120fae0b6fcc0912ad9d71a60 Mon Sep 17 00:00:00 2001 From: George Hanson Date: Wed, 4 Oct 2017 16:10:48 +0100 Subject: [PATCH 3/5] Add elseif --- src/Illuminate/Http/Resources/Json/Resource.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Illuminate/Http/Resources/Json/Resource.php b/src/Illuminate/Http/Resources/Json/Resource.php index bbc0ae52ae72..855c4bdcf6c0 100644 --- a/src/Illuminate/Http/Resources/Json/Resource.php +++ b/src/Illuminate/Http/Resources/Json/Resource.php @@ -93,9 +93,7 @@ public function resolve($request = null) if ($data instanceof Arrayable) { return $this->filter($data->toArray()); - } - - if ($data instanceof JsonSerializable) { + } elseif ($data instanceof JsonSerializable) { return $this->filter($data->jsonSerialize()); } From 20bce936f14962c064b2d94d4540b63362e72bbb Mon Sep 17 00:00:00 2001 From: George Hanson Date: Wed, 4 Oct 2017 16:12:57 +0100 Subject: [PATCH 4/5] Remove early returns --- src/Illuminate/Http/Resources/Json/Resource.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Http/Resources/Json/Resource.php b/src/Illuminate/Http/Resources/Json/Resource.php index 855c4bdcf6c0..de5087743d1a 100644 --- a/src/Illuminate/Http/Resources/Json/Resource.php +++ b/src/Illuminate/Http/Resources/Json/Resource.php @@ -92,9 +92,9 @@ public function resolve($request = null) ); if ($data instanceof Arrayable) { - return $this->filter($data->toArray()); + $data = $this->filter($data->toArray()); } elseif ($data instanceof JsonSerializable) { - return $this->filter($data->jsonSerialize()); + $data = $this->filter($data->jsonSerialize()); } return $this->filter($data); From 40b3e6fd5efaba3643bb462578726c4eb178b0cf Mon Sep 17 00:00:00 2001 From: George Hanson Date: Wed, 4 Oct 2017 16:20:23 +0100 Subject: [PATCH 5/5] Remove multiple calls to filter and added type cast --- src/Illuminate/Http/Resources/Json/Resource.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Http/Resources/Json/Resource.php b/src/Illuminate/Http/Resources/Json/Resource.php index de5087743d1a..5fe863a1f93a 100644 --- a/src/Illuminate/Http/Resources/Json/Resource.php +++ b/src/Illuminate/Http/Resources/Json/Resource.php @@ -92,12 +92,12 @@ public function resolve($request = null) ); if ($data instanceof Arrayable) { - $data = $this->filter($data->toArray()); + $data = $data->toArray(); } elseif ($data instanceof JsonSerializable) { - $data = $this->filter($data->jsonSerialize()); + $data = $data->jsonSerialize(); } - return $this->filter($data); + return $this->filter((array) $data); } /**