我建立一个记录器类,可以让我轻松地记录消息:
lib.Logger.php:
<?php
class Logger {
private $handle;
public function __construct($log_name, $log_path) {
if (! is_dir($log_path))
throw new Exception('Log path does not exist.');
if (! in_array(strtolower(substr($log_name, 0, -4)), array('.log', '.txt')))
$log_name = "{$log_name}.log";
$this->handle = fopen("{$log_path}/{$log_name}", 'a');
$this->log('------------- Initializing ------------- '.get_parent_class($this));
}
// --------------------------------------------------------------------
public function __destruct() {
fclose($this->handle);
}
// --------------------------------------------------------------------
public function log($message) {
$time = date(DATE_RFC822);
$log = "[{$time}] {$message}\n";
fwrite($this->handle, $log);
}
}
?>
而且我把这种使用:
MyController.php:
<?php
class MyController extends Controller {
$logger = new Logger('testlog','/path/to/logs/');
$logger->log('Logs are fun!');
}
?>
当我在itialize对象:
$this->log('------------- Initializing ------------- '.get_parent_class($this));
我要记录的对象(或文件)的名称与调用日志() - 在这种情况下,无论是
MyController或
/path/to/MyController.php。
我试过使用get_parent_class(),但当然这不起作用,因为记录器本身没有父类。
任何想法?十分感谢你的帮助!
亚历克斯·B