Revision: 28132
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 1, 2010 22:38 by orenus
Initial Code
///a generic logger...
//polymorphism in action
abstract class ILogger {
protected abstract function writeLog($sSevirity, $sMsg);
}
class Logger implements ILogger{
private static $loggers = array();
protected function writeLog($sSevirity, $sMsg){
foreach (self::$loggers as $logger){
$logger->writeLog($sSevirity, $sMsg);
}
}
public function registerLogger(ILogger $logger){
self::$loggers[count(self::$loggers)] = $logger;
}
public function logDebug($sMsg){
$this->writeLog("DEBUG", $sMsg);
}
public function logError($sMsg){
$this->writeLog("ERROR", $sMsg);
}
public function logInfo($sMsg){
$this->writeLog("INFO", $sMsg);
}
}
abstract class BaseLogger implements ILogger{
private $ipAddr;
public function BaseLogger(){
Logger::registerLogger($this);
}
private function getClientIP(){
//...
}
}
class MyFileLogger extends BaseLogger{
public function MyFileLogger(){
parent::__constructor();
}
protected function writeLog($sSevirity, $sMsg){
error_log("[". $this->getClientIP() ."] :: ". date("j/n/y H:i:s") . $sSevirity .": ". $sMsg);
}
}
class MyDBLogger extends BaseLogger{
public function MyFileLogger(){
parent::__constructor();
}
protected function writeLog($sSevirity, $sMsg){
//connect...
$query = "insert into my_logger (sevirity, message) values ('$sSevirity', '$sMsg')";
mysql_query($query);
}
}
//in use...
$logger = new Logger();
$logger->logDebug("miao");
$logger->logInfo("mitzi");
$logger->logError("pizzi");
Initial URL
Initial Description
Initial Title
Lesson 3 - Step 3 - Polymorphism in action
Initial Tags
Initial Language
PHP