- Output for 8.1.28 - 8.1.33, 8.2.16 - 8.2.29, 8.3.3 - 8.3.25, 8.4.1 - 8.4.12
<?php
class Foo {
public function __construct(private Bar $bar, private string $_value = 'foo') {}
public function __get(string $name) {
return match($name) {
'value' => $this->_value,
};
}
public function __set(string $name, string $value) {
switch ($name) {
case 'value':
$this->bar->doSomething($this);
$this->_value = $value;
}
}
}
class Bar {
public function doSomething(Foo $foo): void {
$oldValue = $foo->value;
}
}
$foo = new Foo(new Bar());
$foo->value = 'bar';