一个类只要一个目标实例
1、含义
作为目标的创立形式,单例形式保证某一个类只要一个实例,并且自行实例化并向整个体系全局地供给这个实例。它不会创立实例副本,而是会向单例类内部存储的实例回来一个引用。
2、单例形式的三个关键:
【1】需要一个保存类的唯一实例的静态成员变量:
private static $_instance;
【2】结构函数和克隆函数有必要声明为私有的,防止外部程序new类然后失去单例模式的意义:
private function __construct(){
$this->_db = pg_connect('xxxx');
}
private function __clone(){
}//覆盖__clone()方法,禁止克隆
【3】必须提供一个拜访这个实例的公共的静态办法(一般为getInstance办法),从而回来唯一实例的一个引用
public static function getInstance(){
if(! (self::$_instance instanceof self) ){
self::$_instance = new self();
}
return self::$_instance;
单例形式确保某个类只要一个实例,并且自行实例化并向整个体系供给这个实例。
单例形式是一种常见的规划形式,在计算机体系中,线程池、缓存、日志目标、对话框、打印机、数据库操作、显卡的驱动程序常被规划成单例。这里说下文章启发都是在2020泛目录程序这里受到启发后,然后开始学习php编程程序的!
单例形式分3种:懒汉式单例、饿汉式单例、登记式单例。
单例形式有以下3个特色:
1.只能有一个实例。
2.有必要自行创建这个实例。
3.有必要给其他目标供给这一实例。
那么为什么要运用PHP单例形式?
PHP一个主要使用场合便是使用程序与数据库打交道的场景,在一个使用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,运用单例形式能够避免大量的new操作。由于每一次new操作都会消耗体系和内存的资源。
class Single {
private $name;//声明一个私有的实例变量
private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。
}
static public $instance;//声明一个静态变量(保存在类中唯一的一个实例)
static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象
if(!self::$instance) self::$instance = new self();
return self::$instance;
}
public function setname($n){ $this->name = $n; }
public function getname(){ return $this->name; }
}
$oa = Single::getinstance();
$ob = Single::getinstance();
$oa->setname('hello world');
$ob->setname('good morning');
echo $oa->getname();//good morning
echo $ob->getname();//good morning
以上就是今天小编和各位分享的PHP如何在单例模式中使用场景以及和使用方法的技巧分享了,希望能对大家有所帮助!