3v4l.org

run code in 300+ PHP versions simultaneously
<?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