<?php
/**
* @property stdClass $x
* @property stdClass $y
*/
class C {
private $buffer = array();
function __get($key) {
if (array_key_exists($key, $this->buffer)) {
return $this->buffer[$key];
}
$f = 'calc_' . $key;
return $this->buffer[$key] = $this->$f();
}
function calc_x() {
$x = new stdClass;
$x->y = $this->y;
return $x;
}
function calc_y() {
$y = new stdClass;
// Set a stub to avoid infinite recursion.
$this->buffer['y'] = $y;
$y->x = $this->x;
return $y;
}
}
- Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.6 - 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.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
preferences:
154.12 ms | 404 KiB | 181 Q