<?php
class my
{
private $a = null;
protected $b = 'b';
public $c = 'c';
function __construct($b, $c)
{
$this->a = 'a1';
$this->b = $b;
$this->c = $c;
}
public function test()
{
echo $this->a, $this->b, $this->c;
}
}
class my_ex extends my
{
function __construct()
{
$cleaner = function () {
echo "Clearing all properties", "<br>";
unset($this->a, $this->b, $this->c);
};
$cleaner->bindTo($this, get_parent_class($this))->__invoke();
}
function __get($name)
{
$lazySetter = function($name) {
echo "Lazy-loading property {$name}", "<br>";
$this->$name = "new{$name}";
return $this->$name;
};
$lazySetter->bindTo($this, get_parent_class($this))->__invoke($name);
}
}
$my = new my_ex(1,2);
$my->test();
preferences:
42.71 ms | 402 KiB | 5 Q