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();