class Singleton { private static $instance = NULL; private static $arrProtocol = array(); /** * private, um Instanziierung zu verhindern */ private function __construct ( ) { /** do nothing */ } /** * private, um das Klonen zu verhindern */ private function __clone ( ) { /** do nothing */ } /** * Ausgabe der statischen Instanz */ public static function getInstance() { if (self::$instance === NULL) self::$instance = new self; return self::$instance; } public function addMessage ( $message ) { if( strlen($message) >= 1 ) self::$arrProtocol[] = $message; } public function getMessage ( ) { $result = NULL; if ( count(self::$arrProtocol) >= 1 ) { while( list(,$message) = each(self::$arrProtocol) ) $result .= $message.'<br />'; reset(self::$arrProtocol); } return $result; } }
// Test $singleton = Singleton::getInstance(); $singleton->addMessage('Message 1'); $singleton->addMessage('Message 2'); $singleton2 = Singleton::getInstance(); $singleton2->addMessage('Message 3'); $singleton2->addMessage('Message 4'); Singleton::getInstance()->addMessage('Message 5'); Singleton::getInstance()->addMessage('Message 6'); // $singleton3 = new Singleton(); // Fatal error: Call to private Singleton::__construct() //$singleton3 = clone $singleton; // Fatal error: Call to private Singleton::__clone() echo $singleton->getMessage();
/**
Ausgabe
Message 1
Message 2
Message 3
Message 4
Message 5
Message 6
*/