Home >Backend Development >PHP Problem >How to implement php singleton mode

How to implement php singleton mode

(*-*)浩
(*-*)浩Original
2019-10-09 13:27:063081browse

The singleton pattern is a commonly used software design pattern. Contains only one special class called a singleton in its core structure. The singleton pattern ensures that there is only one instance of a class in the system. That is, a class has only one object instance.

How to implement php singleton mode

Tips: The design of the database connection pool generally adopts the singleton mode, because the database connection is a database resource. The use of database connection pools in database software systems is mainly to save the efficiency loss caused by opening or closing database connections. This efficiency loss is still very expensive, so using singleton mode for maintenance can greatly reduce this loss. (Recommended learning: PHP video tutorial)

There are four key points in implementing singleton mode in PHP:

Needs a unique instance of a saved class Static member variables;

Constructors and clone functions must be declared private to prevent external programs from losing the meaning of the singleton mode by using new classes;

Must provide a public static method to access this instance ;

Use the final keyword when defining a class to prohibit inheritance and prevent overriding of parent class methods.

Reference code:

final class Singleton {

    //静态变量要设置为私有,防止被修改
    private static  $instance;

    //构造函数声明为私有,防止外部程序new类
    private function __construct() {

    }

    //克隆函数声明为私有,防止克隆对象
    private function __clone() {

    }

    //提供一个创建唯一实例的接口
    public static function getInstance() {

        if(!(self::$instance instanceof self)) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

//只能根据getInstance静态方法创建Singleton实例
$ins = Singleton::getInstance()

The above is the detailed content of How to implement php singleton mode. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn