From a0ffcaffd2d54a63a5e3468b1f3168d7ea447718 Mon Sep 17 00:00:00 2001 From: Thomas Wiringa Date: Sun, 26 Jun 2016 23:23:52 +0200 Subject: [PATCH 1/4] Add hasAny and hasAll methods --- src/Illuminate/Support/MessageBag.php | 38 +++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/Illuminate/Support/MessageBag.php b/src/Illuminate/Support/MessageBag.php index 8b112f3e21d0..ca4ae3966e79 100755 --- a/src/Illuminate/Support/MessageBag.php +++ b/src/Illuminate/Support/MessageBag.php @@ -106,6 +106,44 @@ public function has($key = null) return $this->first($key) !== ''; } + /** + * Determine if messages exist for all given keys. + * + * @param array $keys + * @param mixed $true + * @param mixed $false + * @return bool + */ + public function hasAll($keys = [], $true = true, $false = false) + { + foreach($keys as $key) { + if ($this->first($key) === '') { + return $false; + } + } + + return $true; + } + + /** + * Determine if messages exist for any given key. + * + * @param array $keys + * @param mixed $true + * @param mixed $false + * @return bool + */ + public function hasAny($keys = [], $true = true, $false = false) + { + foreach($keys as $key) { + if ($this->first($key) !== '') { + return $true; + } + } + + return $false; + } + /** * Get the first message from the bag for a given key. * From 9074b557305da710435fe377df6e8c55919bf7ea Mon Sep 17 00:00:00 2001 From: Thomas Wiringa Date: Sun, 26 Jun 2016 23:24:14 +0200 Subject: [PATCH 2/4] Add tests for hasAny and hasAll --- tests/Support/SupportMessageBagTest.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/Support/SupportMessageBagTest.php b/tests/Support/SupportMessageBagTest.php index bc97541becd6..113aeddef262 100755 --- a/tests/Support/SupportMessageBagTest.php +++ b/tests/Support/SupportMessageBagTest.php @@ -74,6 +74,30 @@ public function testHasIndicatesExistence() $this->assertFalse($container->has('bar')); } + public function testHasAnyIndicatesExistence() + { + $container = new MessageBag; + $container->setFormat(':message'); + $container->add('foo', 'bar'); + $container->add('bar', 'foo'); + $container->add('boom', 'baz'); + $this->assertTrue($container->hasAny(['foo', 'bar'])); + $this->assertTrue($container->hasAny(['boom', 'baz'])); + $this->assertFalse($container->hasAny(['baz'])); + } + + public function testHasAllIndicatesExistence() + { + $container = new MessageBag; + $container->setFormat(':message'); + $container->add('foo', 'bar'); + $container->add('bar', 'foo'); + $container->add('boom', 'baz'); + $this->assertTrue($container->hasAll(['foo', 'bar', 'boom'])); + $this->assertFalse($container->hasAll(['foo', 'bar', 'boom', 'baz'])); + $this->assertFalse($container->hasAll(['foo', 'baz'])); + } + public function testAllReturnsAllMessages() { $container = new MessageBag; From a0142e9745f68e3853a26675a5580cb6e63152ac Mon Sep 17 00:00:00 2001 From: Thomas Wiringa Date: Sun, 26 Jun 2016 23:46:05 +0200 Subject: [PATCH 3/4] Fix missing space after foreach --- src/Illuminate/Support/MessageBag.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Support/MessageBag.php b/src/Illuminate/Support/MessageBag.php index ca4ae3966e79..271593845c7c 100755 --- a/src/Illuminate/Support/MessageBag.php +++ b/src/Illuminate/Support/MessageBag.php @@ -116,7 +116,7 @@ public function has($key = null) */ public function hasAll($keys = [], $true = true, $false = false) { - foreach($keys as $key) { + foreach ($keys as $key) { if ($this->first($key) === '') { return $false; } @@ -135,7 +135,7 @@ public function hasAll($keys = [], $true = true, $false = false) */ public function hasAny($keys = [], $true = true, $false = false) { - foreach($keys as $key) { + foreach ($keys as $key) { if ($this->first($key) !== '') { return $true; } From c12e8bfff9958e2c6c5f71737ec3d8600a40e26c Mon Sep 17 00:00:00 2001 From: Thomas Wiringa Date: Mon, 27 Jun 2016 16:19:37 +0200 Subject: [PATCH 4/4] Remove optional parameters $true and $false --- src/Illuminate/Support/MessageBag.php | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Illuminate/Support/MessageBag.php b/src/Illuminate/Support/MessageBag.php index 271593845c7c..d1482772e787 100755 --- a/src/Illuminate/Support/MessageBag.php +++ b/src/Illuminate/Support/MessageBag.php @@ -110,38 +110,34 @@ public function has($key = null) * Determine if messages exist for all given keys. * * @param array $keys - * @param mixed $true - * @param mixed $false * @return bool */ - public function hasAll($keys = [], $true = true, $false = false) + public function hasAll($keys = []) { foreach ($keys as $key) { if ($this->first($key) === '') { - return $false; + return false; } } - return $true; + return true; } /** * Determine if messages exist for any given key. * * @param array $keys - * @param mixed $true - * @param mixed $false * @return bool */ - public function hasAny($keys = [], $true = true, $false = false) + public function hasAny($keys = []) { foreach ($keys as $key) { if ($this->first($key) !== '') { - return $true; + return true; } } - return $false; + return false; } /**