【建议收藏】PHP单例模式详解以及实际运用
创始人
2025-05-31 22:01:50
0

PHP单例模式详解以及实际运用

什么是单例模式?

首先我们百度百科他怎么说?

单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)、

大白话:对于PHP而言 在一次生命周期中,如果使用了单例模式。我们不管实例化多少次。整个生命周期只会存在一个实例。

为什么要使用单例模式?

  1. 实例控制
    单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
  2. 灵活性
    因为类控制了实例化过程,所以类可以灵活更改实例化过程。

应用的场景

  1. Mysql连接
  2. Redis连接
  3. 等等其他连接

这些场景为什么要用到单例模式?

  • 防止重复的实例化连接。造成连接浪费。在一次生命周期中,我们只要创建一次连接就可以了。

单例代码示例

  1. PHP代码示例
private static $instance = null;// 禁止被实例化private function __construct(){}// 禁止cloneprivate function __clone(){}//  实例化自己并保存到$instance中,已实例化则直接调用public static function getInstance(): object{if (empty(self::$instance)) {self::$instance = new self();}return self::$instance;}public function test(): string{return '这是一个单例模式';}}// 两次调用返回同一个实例
$single1 = Singleton::getInstance();
$single2 = Singleton::getInstance();var_dump($single1, $single2);
echo $single1->test();
  1. Golang代码示例

    1. (饿汉模式) 初始化就创建
    package mianimport "fmt"var instanse *singlertype singler struct {Name string
    }func NewSingler()*singler{return instanse
    }func init() {instanse = new(singler)instanse.Name = "test"
    }func main() {singler := NewSingler()fmt.Println(singler.Name)
    }
    
    1. (懒汉模式)需要的模式就创建
    package mainimport ("fmt""sync"
    )var instanse *singler
    var mutex sync.Mutextype singler struct {Name string
    }func NewSingler()*singler {if instanse == nil{mutex.Lock()defer mutex.Unlock()if instanse == nil{instanse = new(singler)instanse.Name = "test"}}return instanse
    }func main() {singler := NewSingler()fmt.Println(singler.Name)
    }
    

相关内容

热门资讯

用兴高采烈造句 用兴高采烈造句精选  1、肯尼科特兴高采烈地说,“今年夏天我们可要玩个痛快。”  2、庆“六一”的游...
日积月累造句   日积月累造句  1、因为在感觉,知觉和抉择上日积月累的超刺激的冲击已经在我们中间酿成了疾病。  ...
豁然开朗造句 豁然开朗造句大全  造句,动词词语,是指用词语组织句子。今亦以指初等学校语文练习内容之一。下面是关于...
机灵造句 机灵造句  在平日的学习、工作和生活里,大家最不陌生的就是句子了吧,根据语气的不同句子可以分为陈述句...
“得过且过”造句 1、人的一生是很短促的,应该珍惜生命,努力工作,不要得过且过。2、随缘不是得过且过,因循苟且,而是尽...
收成的造句 收成的造句  在日常的学习中,是不是经常追着老师要知识点?知识点是知识中的最小单位,最具体的内容,有...
“杂乱无章”造句 101、明末清初这段历史杂乱无章,读起来千头万序,让人摸不着头脑。102、图一无论在枝干的构成上,还...
用寒暄造句 用寒暄造句  造句是初等学校语文练习内容、考试题型、作业方式等之一。以下是小编为大家整理的用寒暄造句...
裤腰的意思及造句 裤腰的意思及造句  裤腰拼音  【注音】: ku yao  裤腰解释  【意思】:裤子的最上端,系腰...
绿油油如何造句 绿油油如何造句  1.百合花的叶子十分漂亮,绿油油的,衬托着花朵。绿叶不可说四季常青,但绿起来却绿着...
三年级与众不同意思及造句   桂林的水独一无二,桂林的山与众不同。下面是小编为你带来的三年级与众不同意思及造句,欢迎阅读。  ...
暴厉恣睢的反义词 暴厉恣睢的反义词有:慈眉善目,暴厉恣睢[bào lì zí suī]的意思:暴:残暴;恣睢:横行霸道...
入超拼音解释及造句 入超拼音解释及造句  入超拼音  【注音】: ru chao  入超解释  【意思】:在一定时期(一...
今非昔比的反义词 今非昔比的反义词有:今不如昔,厚古薄今,慕古薄今,今非昔比[jīn fēi xī bǐ]的意思:昔:...
独具只眼的反义词 独具只眼的反义词有:一无所长,愚昧无知,独具只眼[dú jù zhī yǎn]的意思:具有独到的见解...
不以为然的反义词 不以为然的反义词有:五体投地,仰承鼻息,理所当然,顶礼膜拜,不以为然[bù yǐ wéi rán]的...
令人神往的反义词 令人神往的反义词有:令人作呕,令人切齿,令人痛心,令人神往[lìng rén shén wǎng]的...
补残守缺的反义词 补残守缺的反义词有:标新立异,补残守缺[bǔ cán shǒu quē]的意思:残:残缺,不完整;缺...
石沉大海的反义词 石沉大海的反义词有:一封家书,死灰复燃,石沉大海[shí chén dà hǎi]的意思:石头沉到海...
心胸开阔的反义词 心胸开阔的反义词有:小心眼儿,心胸狭隘,心胸开阔[xīn xiōng kāi kuò]的意思:心胸:...