36 lines
		
	
	
		
			826 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			826 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace XFramework;
 | 
						|
 | 
						|
/**
 | 
						|
 * Roundcube Plus Framework plugin.
 | 
						|
 *
 | 
						|
 * Copyright 2016, Tecorama LLC.
 | 
						|
 *
 | 
						|
 * @license Commercial. See the LICENSE file for details.
 | 
						|
 * @codeCoverageIgnore
 | 
						|
 */
 | 
						|
 | 
						|
trait Singleton {
 | 
						|
    protected static $instance;
 | 
						|
 | 
						|
    public static function instance($parameters = null)
 | 
						|
    {
 | 
						|
        return static::$instance ?? static::$instance = new static($parameters);
 | 
						|
    }
 | 
						|
 | 
						|
    public static function hasInstance(): bool
 | 
						|
    {
 | 
						|
        return (bool)static::$instance;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function deleteInstance()
 | 
						|
    {
 | 
						|
        if (static::hasInstance()) {
 | 
						|
            static::$instance = null;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    final public function __clone() {} // restrict cloning
 | 
						|
    final public function __sleep() {} // restrict serializing
 | 
						|
    final public function __wakeup() {} // restrict unserializing
 | 
						|
} |