Мой домашний простой регистратор (просто обертка вокруг fopen
, fwrite
, fclose
) должен быть включен или отключен на лету.Я думаю, что способ, которым я проверяю, включена ли регистрация, является overkill (каждый вызов метода регистрации требует оценки LOGGING
):
config.inc.php
define('LOGGING', true);
logger.php
public function __construct($filename)
{
$this->fp = fopen($filename, 'w+');
}
public function __destruct()
{
fclose($this->fp);
}
public function warn($message)
{
$this->log('WARN', $message);
}
private function log($type, $message)
{
if(!defined(LOGGING) || !LOGGING) return;
fwrite($this->fp, "[$type] $message\n");
}
Вопрос: как инициализировать обработчик файла, например, null
и удалитьчек на LOGGING
?Я имею в виду что-то вроде этого:
public function __construct($filename)
{
// Create a fake stream if logging is disabled
$this->fp = !defined(LOGGING) || !LOGGING ? null : fopen($filename, 'w+);
}
Будущий вызов $logger->warn('Ops..')
ничего не должен делать, не вызывая ошибок или уведомлений.