- array_shift: documentation ( source)
- register_tick_function: documentation ( source)
<?php
declare(ticks=1);
function tick() {
global $ticks;
if ($ticks) {
$tick = array_shift($ticks);
$tick();
}
}
register_tick_function('tick');
class A {
protected $b = ['d' => 321];
function & __get($name) {
echo "And now, __get is running...\n";
$GLOBALS['ticks'][] = function () {
echo "THIS IS WHERE WE VALIDATE CHANGES TO THE ARRAY!\n";
};
return $this->{$name};
}
}
eval('
$a = new A();
$a->b["c"] = 123;
var_dump($a->b);
');