3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Foo { protected $prot; public $pub; } function hydrate($class,$dry){ static $hydrators = array(); $h = '_Hydrator__'.$class; if (empty($hydrators[$class])) { eval('class '.$h.' extends '.$class.' { static function __hydrate(array $array) { $o = new '.$class.'(); foreach ($array as $prop_name => $prop_value) $o->$prop_name = $prop_value; return $o; } } '); $hydrators[$class] = true; } return $h::__hydrate($dry); } var_dump( hydrate('Foo',array('prot'=>1,'pub'=>2)) );

preferences:
31.84 ms | 402 KiB | 5 Q