<?php abstract class Singleton { protected function __construct() {} final public static function getInstance() { static $_instances = array(); $class_name = get_called_class(); if (! isset($_instances[$class_name])) { $_instances[$class_name] = new $class_name(); } return $_instances[$class_name]; } final private function __clone() {} }