diff --git a/library/Requests/Utility/FilteredIterator.php b/library/Requests/Utility/FilteredIterator.php index 04700cd58..66ab323ee 100644 --- a/library/Requests/Utility/FilteredIterator.php +++ b/library/Requests/Utility/FilteredIterator.php @@ -39,7 +39,11 @@ public function __construct($data, $callback) { */ public function current() { $value = parent::current(); - $value = call_user_func($this->callback, $value); + + if (is_callable($this->callback)) { + $value = call_user_func($this->callback, $value); + } + return $value; } diff --git a/tests/Utility/FilteredIterator.php b/tests/Utility/FilteredIterator.php index 5e833ccf2..03df70e29 100644 --- a/tests/Utility/FilteredIterator.php +++ b/tests/Utility/FilteredIterator.php @@ -9,8 +9,8 @@ public function testDeserializeRequestUtilityFilteredIteratorObjects($value) { if (get_class($value) === 'Requests_Utility_FilteredIterator') { $new_value = unserialize($serialized); if (version_compare(PHP_VERSION, '5.3', '>=')) { - // phpcs:ignore PHPCompatibility.Syntax.NewClassMemberAccess.OnNewFound -- Wrapped in version check. - $property = (new ReflectionClass('Requests_Utility_FilteredIterator'))->getProperty('callback'); + $reflection = new ReflectionClass('Requests_Utility_FilteredIterator'); + $property = $reflection->getProperty('callback'); $property->setAccessible(true); $callback_value = $property->getValue($new_value); $this->assertSame(null, $callback_value); @@ -27,6 +27,7 @@ public function dataSerializeDeserializeObjects() { return array( array(new Requests_Utility_FilteredIterator(array(1), 'md5')), array(new Requests_Utility_FilteredIterator(array(1, 2), 'sha1')), + array(new Requests_Utility_FilteredIterator(array(1, 2, 3), 'doesnotexist')), array(new ArrayIterator(array(1, 2, 3))), ); } diff --git a/tests/phpunit.xml.dist b/tests/phpunit.xml.dist index 7f8186c7e..c29b6a5e6 100644 --- a/tests/phpunit.xml.dist +++ b/tests/phpunit.xml.dist @@ -27,6 +27,7 @@ Response/Headers.php Session.php SSL.php + Utility/FilteredIterator.php