在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`方法的功能,比如支持不同的日志级别、将日志写入到不同的文件中,或者将日志发送到远程服务器等。