<?php
function assign_foo($instance) {
$instance->foo = 2;
}
final class Content {
protected $data;
public function __get(string $name) {
return $this->data[$name];
}
public function __set(string $name, mixed $value): void {
if ($value === 1) {
assign_foo($this);
} else {
$this->data[$name] = $value;
}
}
}
set_error_handler(function () {
echo (new Exception)->getTraceAsString();
});
$content = new Content();
$content->foo = 1;
- Output for 8.4.1
- #0 /in/YtnAhT(4): {closure:/in/YtnAhT:23}(8192, 'Creation of dyn...', '/in/YtnAhT', 4)
#1 /in/YtnAhT(16): assign_foo(Object(Content))
#2 /in/YtnAhT(28): Content->__set('foo', 1)
#3 {main}
- Output for 8.2.0 - 8.2.26, 8.3.0 - 8.3.14
- #0 /in/YtnAhT(4): {closure}(8192, 'Creation of dyn...', '/in/YtnAhT', 4)
#1 /in/YtnAhT(16): assign_foo(Object(Content))
#2 /in/YtnAhT(28): Content->__set('foo', 1)
#3 {main}
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.31
preferences:
51.64 ms | 408 KiB | 5 Q