1. The origin of the singleton pattern
Class
is an abstraction of a class of things with common characteristics in real life. Through the instantiation of a class, many objects are generated, but at the same time it also consumes a lot of resources (such as the limit on the number of connections when connecting to the database
, and for example, opening the resource manager on the computer
has uniqueness), which also resulted in the need to limit the instantiation of the class. In order to protect the uniqueness of resources, single case mode
was born.
2. Definition of singleton pattern
Definition: Singleton pattern is a design idea that a class design will only produce at most one object.
3. Instance of singleton mode
a. Create an empty class.
b. Being able to instantiate a class multiple times is the reason why multiple objects are generated, so you can privatize the constructor method.
<?php class Use{ } $a=new Use();//实例化一个对象 ?>
Constructor methodmakes the number of instantiated objects generated to 0, so that the constructor method can be called through
static method inside the class , and then return the constructor to the outside.
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } } ?>
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { return new self(); } } $s1=Use::getSingleton(); ?>
object will be obtained by calling the
static method. However, you can still instantiate new objects through
clone, so you can privatize
clone.
<?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(); ?>
The above is the detailed content of Singleton pattern in php. For more information, please follow other related articles on the PHP Chinese website!