3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(E_ALL); abstract class Father { private static $childs = array(); public static function getChild( $child ) { if (!array_key_exists("$child", self::$childs)) { self::$childs["$child"] = new $child; } return self::$childs["$child"]; } public function __destruct() { foreach (self::$childs as $i => $child) { self::$childs[$i] = $child = null; } } } class Child1 extends Father {} class Child2 extends Father {} $child1 = Father::getChild('Child1'); $child2 = Father::getChild('Child2');

preferences:
51.82 ms | 402 KiB | 5 Q