<?php
class RegistryDeferred {
	static $entries = array();
	static $classes = array();
	
	static function register($name, $class) {
		self::$classes[$name] = $class;
	}
	
	static function getEntry($name) {
		if (!isset(self::$entries[$name])) {
			self::$entries[$name] = new self::$classes[$name];
		}
		return self::$entries[$name];
	}
}

// použití
RegistryDeferred::register("master", "DbMaster");
// získá objekt třídy DbMaster
$master = RegistryDeferred::getEntry("master");