php 设计模式之 单例
1. 单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点
2. 实列
class Singleton {
private static $uniqueInstance; // 静态实例
private $singletonData = '单例类内部数据';
private function __construct() { // 构造方法私有化,外部不能直接实例化这个类
}
private function __clone() {
}
public static function GetInstance() {
if (self::$uniqueInstance == null) {
self::$uniqueInstance = new Singleton(); // 实例自身
}
return self::$uniqueInstance;
}
public function SingletonOperation(){
$this->singletonData = '修改单例类内部数据';
}
public function GetSigletonData()
{
return $this->singletonData;
}
}
$singletonA = Singleton::GetInstance();
echo $singletonA->GetSigletonData(), PHP_EOL;
$singletonB = Singleton::GetInstance();
if ($singletonA === $singletonB) {
echo '相同的对象', PHP_EOL;
}
$singletonA->SingletonOperation(); // 这里修改的是A
echo $singletonB->GetSigletonData(), PHP_EOL;
3. 使用场景
- laravel中在 ioc 容器部分使用单例模式
4. 扩展
-
单例在PHP中到底是不是唯一的
如果在一个进程下,也就是一个fpm下,是唯一的
nginx同步拉起的多个fpm中那肯定就不是唯一的啦,一个进程一个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律