
单例模式(Singleton Pattern)是确保一个类只有一个实例,并提供一个全局访问点的设计模式。它常用于管理共享资源(如数据库连接、配置管理、日志记录器等)。
class Singleton
{
// 1. 私有静态变量保存唯一实例
private static $instance = null;
// 2. 私有构造函数防止外部 new 实例化
private function __construct()
{
// 初始化代码(如数据库连接)
}
// 3. 禁止克隆对象
private function __clone()
{
// 防止通过克隆创建新实例
}
// 4. 防止反序列化(PHP 7.4+)
public function __wakeup()
{
throw new Exception("Cannot unserialize singleton");
}
// 5. 全局访问点
public static function getInstance(): self
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
// 示例方法
public function doSomething()
{
echo "Singleton is working!";
}
}// 获取单例实例
$instance1 = Singleton::getInstance();
$instance2 = Singleton::getInstance();
// 验证是否为同一实例
var_dump($instance1 === $instance2); // 输出 bool(true)
// 调用方法
$instance1->doSomething(); // 输出 "Singleton is working!"new 关键字在类外部实例化对象。getInstance() 控制实例的唯一性。__clone() 设为私有,防止通过克隆创建新对象。__wakeup() 抛出异常防止反序列化破坏单例。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。