On gists
2. Singleton
Navrhove vzory - Bohmer
singleton.php
Raw
#
<?php
class DebuggerEcho implements Debugger
{
protected function __construct() {}
private function __clone() {}
public static function getInstance()
{
if (null == self::$instance)
{
self::$instance = new self();
}
return self::$instance;
}
public function debug($message)
{
print $message . "\n";
}
}
// AKA multition
class DebuggerLog implements Debugger
{
protected $logfile = null;
private static $instances = array();
public static function getInstance($logfile)
{
if (!isset(self::$instances[$logfile])) {
self::$instances[$logfile] = new self($logfile);
}
return self::$instances[$logfile];
}
protected function __construct($logfile)
{
$this->logfile = $logfile;
}
private function __clone()
{
}
public function debug($message)
{
error_log($message . "\n", 3, $this->logfile);
}
}
// usage
$debugger1 = DebuggerLog::getInstance('./debugger1.log');
$debugger1->debug('Lorem ipsum dolor sit amet.');
$debugger2 = DebuggerLog::getInstance('./debugger2.log');
$debugger2->debug('Proin fringilla bibendum sagittis.');
$debugger3 = DebuggerLog::getInstance('./debugger1.log');
$debugger3->debug('Mauris vitae augue dolor.');