php利用单例模式实现日志处理类库


在PHP中,单例模式是一种常用的设计模式,它确保一个类仅有一个实例,并提供一个全局访问点。下面是一个使用单例模式实现日志处理类库的简单示例:


<?php

class LogHandler
{
    // 静态属性,用于存储类的唯一实例
    private static $instance = null;

    // 私有化构造方法,防止外部通过new创建对象
    private function __construct()
    {
        // 初始化代码,例如配置日志路径等
    }

    // 私有化克隆方法,防止对象被克隆
    private function __clone()
    {
    }

    // 私有化反序列化方法,防止对象被反序列化
    private function __wakeup()
    {
    }

    // 静态方法,用于获取类的唯一实例
    public static function getInstance()
    {
        if (is_null(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    // 示例方法:记录日志
    public function log($message)
    {
        // 这里使用简单的文件写入作为日志记录方式
        // 实际应用中,你可能需要更复杂的逻辑,比如日志级别判断、多文件日志等
        file_put_contents('log.txt', date('Y-m-d H:i:s') . ' - ' . $message . PHP_EOL, FILE_APPEND);
    }
}

// 使用示例
LogHandler::getInstance()->log('这是一条测试日志');

在这个例子中,`LogHandler`类通过私有化其构造方法、克隆方法和反序列化方法,并提供一个静态的`getInstance`方法来确保类只有一个实例。`log`方法用于记录日志,这里简单地使用`file_put_contents`函数将日志信息追加到`log.txt`文件中。

你可以根据自己的需求,扩展`log`方法的功能,比如支持不同的日志级别、将日志写入到不同的文件中,或者将日志发送到远程服务器等。