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. 使用场景

  1. laravel中在 ioc 容器部分使用单例模式

4. 扩展

  1. 单例在PHP中到底是不是唯一的

    如果在一个进程下,也就是一个fpm下,是唯一的
    nginx同步拉起的多个fpm中那肯定就不是唯一的啦,一个进程一个

posted @   linsonga  阅读(60)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示