1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
--TEST--
__clone() cannot indirectly modify unlocked readonly properties
--FILE--
<?php
class Foo {
public function __construct(
public readonly array $bar
) {}
public function __clone()
{
$this->bar['bar'] = 'bar';
}
}
$foo = new Foo([]);
// First call fills the cache slot
try {
var_dump(clone $foo);
} catch (Error $e) {
echo $e->getMessage(), "\n";
}
try {
var_dump(clone $foo);
} catch (Error $e) {
echo $e->getMessage(), "\n";
}
?>
--EXPECT--
Cannot indirectly modify readonly property Foo::$bar
Cannot indirectly modify readonly property Foo::$bar
|