1. L'origine du modèle singleton
类
est une abstraction d'une classe de choses ayant des caractéristiques communes dans la vie réelle, à travers des instances de classes isation, entraînant de nombreux objets, mais cela entraînait également la consommation de beaucoup de ressources (par exemple, la limite du nombre de connexions lors de la connexion 数据库
, et par exemple, l'ouverture de 资源管理器
dans un ordinateur est unique ), qui a également abouti à Il existe une obligation de limiter l'instanciation d'une classe Afin de protéger le caractère unique des ressources, 单例模式
est né.
2. Définition du modèle singleton
Définition : le modèle singleton est une idée de conception selon laquelle une conception de classe ne produira qu'un seul objet.
3. Instance de modèle singleton
Créez une classe vide. >
<?php class Use{ } $a=new Use();//实例化一个对象 ?>
. 构造方法
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } } ?>
rend le nombre d'objets instanciés générés à 0, afin que le constructeur puisse être appelé via 构造方法
à l'intérieur de la classe, puis le constructeur est renvoyé vers l'extérieur. 静态方法
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { return new self(); } } $s1=Use::getSingleton(); ?>
<?php class Use{ private static $object = NULL;//初始化为NULL,没有对象 private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { //判断类内部的静态属性是否存在对象 if(!(self::$object instanceof self)){ //当前保存的内容不是当前类的对象 self::$object = new self(); } //返回对象给外部 return self::$object; } } $s1=Use::getSingleton(); ?>
sera obtenu en appelant 静态方法
. Mais vous pouvez toujours instancier de nouveaux objets via 对象
, vous pouvez donc privatiser 克隆
. 克隆
<?php class Use{ private static $object = NULL;//初始化为NULL,没有对象 private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { //判断类内部的静态属性是否存在对象 if(!(self::$object instanceof self)){ //当前保存的内容不是当前类的对象 self::$object = new self(); } //返回对象给外部 return self::$object; } private function __clone(){} } $s1=Use::getSingleton(); ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!