diff --git a/library/Requests/Utility/FilteredIterator.php b/library/Requests/Utility/FilteredIterator.php index 76a29e722..0e2794493 100644 --- a/library/Requests/Utility/FilteredIterator.php +++ b/library/Requests/Utility/FilteredIterator.php @@ -42,4 +42,20 @@ public function current() { $value = call_user_func($this->callback, $value); return $value; } + + /** + * @inheritdoc + */ + public function unserialize( $serialized ) { + } + + /** + * @inheritdoc + */ + public function __unserialize( $serialized ) { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.MethodDoubleUnderscore,PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound + } + + public function __wakeup() { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.MethodDoubleUnderscore,PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__wakeupFound + unset( $this->callback ); + } } diff --git a/tests/Utility/FilteredIterator.php b/tests/Utility/FilteredIterator.php new file mode 100644 index 000000000..9254959fa --- /dev/null +++ b/tests/Utility/FilteredIterator.php @@ -0,0 +1,32 @@ +=' ) ) { + $property = ( new ReflectionClass( 'Requests_Utility_FilteredIterator' ) )->getProperty( 'callback' ); + $property->setAccessible( true ); + $callback_value = $property->getValue( $new_value ); + $this->assertSame( null, $callback_value ); + } else { + $current_item = $new_value->current(); + $this->assertSame( null, $current_item ); + } + } else { + $this->assertEquals( $value->count(), unserialize( $serialized )->count() ); + } + } + + function data_serialize_deserialize_objects() { + return array( + array( new Requests_Utility_FilteredIterator( array( 1 ), 'md5' ) ), + array( new Requests_Utility_FilteredIterator( array( 1, 2 ), 'sha1' ) ), + array( new ArrayIterator( array( 1, 2, 3 ) ) ), + ); + } +}