--TEST-- Lazy objects: resetAsLazy*() may call destructors of reset properties --FILE-- foo = new Foo(); $reflector = new ReflectionClass(Bar::class); print "Reset\n"; $reflector->resetAsLazyProxy($bar, function (Bar $bar) { $result = new Bar(); $result->foo = null; $result->s = 'init'; return $result; }); print "Dump\n"; var_dump($bar->s); print "Done\n"; ?> --EXPECT-- Reset Bar::__destruct Foo::__destruct Dump string(4) "init" Done Bar::__destruct