. */ namespace Util; /** * Classe astratta per la generazione di oggetti istanziabili una singola volta. * * @since 2.3 */ abstract class Singleton { /** @var Singleton Oggetti istanziati */ protected static $instance = []; /** * Protected constructor to prevent creating a new instance of the Singleton via the `new` operator from outside of this class. */ protected function __construct() { } /** * Private clone method to prevent cloning of the instance of the Singleton instance. */ private function __clone() { } /** * Private unserialize method to prevent unserializing of the Singleton instance. */ private function __wakeup() { } /** * Restituisce l'istanza della classe in oggetto. * * @return Singleton */ public static function getInstance() { $class = static::class; if (!isset(self::$instance[$class])) { self::$instance[$class] = new static(); } return self::$instance[$class]; } }