diff --git a/src/Data/DataSet.php b/src/Data/DataSet.php index f1e728a1f..624d65574 100644 --- a/src/Data/DataSet.php +++ b/src/Data/DataSet.php @@ -436,18 +436,30 @@ public function transform($callback) * * @since 3.1.3 */ - public function filter($callback) + public function filter($callback = null) { $dataset = clone $this; - $dataset->data = array_filter($dataset->data, $callback, ARRAY_FILTER_USE_BOTH); + if (!$callback) + { + $dataset->data = array_filter($dataset->data); - return $dataset; - } + return $dataset; + } - public function reject($callback) - { + $return = array(); + foreach ($dataset->data as $key => $value) + { + if (call_user_func($callback, $value, $key)) + { + $return[$key] = $value; + } + } + + $dataset->data = $return; + + return $dataset; } /** diff --git a/src/DataMapper/Test/EntityTest.php b/src/DataMapper/Test/EntityTest.php index 5e2b88a54..f575add93 100644 --- a/src/DataMapper/Test/EntityTest.php +++ b/src/DataMapper/Test/EntityTest.php @@ -178,6 +178,13 @@ public function testMutator() */ public function testJsonSerialize() { + if (version_compare(PHP_VERSION, '5.4', '<')) + { + $this->markTestSkipped('PHP 5.3 do not support JsonSerialize()'); + + return; + } + $this->assertEquals(json_encode($this->instance->dump(true)), json_encode($this->instance)); } }