@ 2017-12-05T08:56:45Z --TEST--
Keeping a reference to an object property in an array should not override existing references
?>
--FILE--
<?php
class Container
{
/** @var \stdClass|null */
public $referencedProperty;
public function __clone()
{
$this->referencedProperty = clone $this->referencedProperty;
}
}
$references = [];
$container = new Container();
$loadFieldByReference = function (& $referencedProperty) use (& $references) {
$referencedProperty = new \stdClass();
$references[] = & $referencedProperty;
};
$loadFieldByReference($container->referencedProperty);
$container->referencedProperty->publicProperty = 123;
$clone = clone $container;
$clone->referencedProperty->publicProperty = 234;
echo $container->referencedProperty->publicProperty, "\n";
echo $clone->referencedProperty->publicProperty, "\n";
echo $container->referencedProperty === $clone->referencedProperty ? "same\n" : "not same\n";
?>
--EXPECT--
123
234
not same
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.1.0 - 7.1.20 , 7.2.0 - 7.2.33 , 7.3.16 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.33 , 8.2.0 - 8.2.29 , 8.3.0 - 8.3.25 , 8.4.1 - 8.4.12 --TEST--
Keeping a reference to an object property in an array should not override existing references
?>
--FILE--
234
234
same
--EXPECT--
123
234
not same preferences:dark mode live preview ace vim emacs key bindings
141.58 ms | 408 KiB | 5 Q