18910140161

php单例模式中使用场景和使用方法

顺晟科技

2021-06-16 10:32:09

294

一个类只有一个对象实例

1.意义

作为一种对象创建模式,singleton pattern确保一个类只有一个实例,并实例化自己,将这个实例全局地提供给整个系统。它不是创建实例的副本,而是返回对存储在singleton类中的实例的引用。

2.单例模式的三个关键点:

(1).需要静态成员变量:来保存类的实例

私有静态$ _ instance

(2).构造函数和克隆函数必须声明为私有,以防止外部程序新类丢失singleton模式:的含义

private function __construct(){

$ this-_ db=pg _ connect(' xxxx ');

}

private function __clone(){

}//覆盖__clone()方法并禁止克隆

(3).必须提供一个公共静态方法(通常是getInstance方法)来访问这个实例,以便返回实例的引用

公共静态函数getInstance(){

if(!(self : $ _ instance instance of self)){

self : $ _ instance=new self();

}

return self : $ _ instance;

Singleton模式确保一个类只有一个实例,并实例化自己,将这个实例提供给整个系统。

单例模式是一种常见的设计模式。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动往往被设计成单个的案例。

单例模式有三种:懒单例、饿单例、注册单例。

单例模式具有以下三个特征:

1.只能有一个实例。

2.您必须自己创建此实例。

3.此示例必须提供给其他对象。

那么为什么要用PHP singleton模式呢?

PHP的主要应用之一是应用程序处理数据库的场景。一个应用程序中有很多数据库操作。鉴于数据库句柄连接数据库的行为,使用单例模式可以避免很多新的操作。因为每个新操作都会消耗系统和内存资源。

单身阶层{

private $ name//声明私有实例变量

private function _ _ construct(){//声明一个私有构造函数,以防止外部代码使用new创建对象。

}

静态public $实例;//声明一个静态变量(类中只保存了一个实例)

static public function getinstance(){//声明一个getinstance()静态方法来检测是否有实例对象。

if(!self : $ instance)self : $ instance=new self();

return self: $ instance

}

public function set name($ n){ $ this-name=$ n;}

public函数getname(){ return $ this-name;}

}

$ OA=single :3360 getinstance();

$ ob=single :3360 getinstance();

$ OA-set name(' hello world ');

$ob-setname('早安');

echo $ OA-getname();//早上好

echo $ ob-getname();//早上好

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航