<?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');