Skip to content
Extraits de code Groupes Projets
Singleton.php 1,46 ko
Newer Older
  • Learn to ignore specific revisions
  •  * Piwik - free/libre analytics platform
    
     *
     * @link http://piwik.org
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
     *
     */
    
    namespace Piwik;
    
    
    mattab's avatar
    mattab a validé
    /**
    
     * The singleton base class restricts the instantiation of derived classes to one object only.
    
     * All plugin APIs are singletons and thus extend this class.
    
    mattab's avatar
    mattab a validé
     *
    
    mattab's avatar
    mattab a validé
     */
    
        protected function __construct()
        {
        }
    
        final private function __clone()
        {
        }
    
        /**
         * Returns the singleton instance for the derived class. If the singleton instance
         * has not been created, this method will create it.
    
    mattab's avatar
    mattab a validé
         *
    
        public static function getInstance()
        {
    
            $class = get_called_class();
    
            if (!isset(self::$instances[$class])) {
                self::$instances[$class] = new $class;
            }
            return self::$instances[$class];
        }
    
    
    mattab's avatar
    mattab a validé
        /**
         * Used in tests only
         * @ignore
         */
    
        public static function unsetInstance()
        {
            $class = get_called_class();
            unset(self::$instances[$class]);
        }
    
    
        /**
         * Sets the singleton instance. For testing purposes.
    
    mattab's avatar
    mattab a validé
         * @ignore
    
         */
        public static function setSingletonInstance($instance)
        {
            $class = get_called_class();
            self::$instances[$class] = $instance;
        }
    
    
        /**
         * @ignore
         */
        public static function clearAll()
        {
            self::$instances = array();
        }