PHP: Singleton + Herencia

abstract class Singleton {
    private static $instances = array();

    public static function getInstance() {
        $className = get_called_class(); //no usar __CLASS__

        if (!isset($instances[$className])) {
            $instances[$className] = new $className;
        }

        return $instances[$className];
    }

    public function __clone() { trigger_error('Clone is not allowed.', E_USER_ERROR); }

    public function __wakeup(){ trigger_error('Unserializing is not allowed.', E_USER_ERROR); }
}

class SomeSingleton extends Singleton { ... }
class SomeSingleton2 extends Singleton { ... }

$ss = SomeSingleton::getInstance();
$ss2 = SomeSingleton2::getInstance();

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *