PHP design pattern singleton pattern principle and implementation method analysis php skills

jacklove
Release: 2023-04-01 20:06:01
Original
2287 people have browsed it

This article mainly introduces the principles and implementation methods of the singleton pattern in PHP design patterns. It briefly introduces the concept, function, and composition of the singleton pattern, and analyzes the related operating techniques of defining and using the singleton pattern in PHP in the form of examples. , Friends in need can refer to

The examples in this article describe the principles and implementation methods of the singleton pattern of PHP design patterns. Share it with everyone for your reference, the details are as follows:

1. What is the singleton mode

As an object creation mode, the singleton mode ensures that there is only one class of a certain class instance, and provide external access to this global instance. It does not create a copy of the instance, but returns a reference to the instance stored inside the singleton class.

2. Three elements of PHP singleton mode

1. A static member variable is required to save the only instance of the class.

2. Constructors and clone functions must be declared private to prevent external programs from creating or copying instance copies.

3. A public static method must be provided to access this instance, thereby returning a reference to the unique instance.

3. Why use singleton mode

The benefits of using singleton mode are great, take database operation as an example. If the singleton mode is not adopted, when a large number of database operations occur in the program, new operations must be performed every time, which consumes a large amount of memory resources and system resources, and every time a database connection is opened and closed, it is a violation of the database. A great test and waste. Using the singleton mode, it only needs to be instantiated once, and there is no need to perform new operations every time, which greatly reduces resource consumption.

4. Singleton mode example

Here we take database operation as an example

<?php
/**
*  单例模式
**/
class Db
{
  //保存全局实例
  private static $instance;
  //数据库连接句柄
  private $db;
  //数据库连接参数
  const HOSTNAME = "127.0.0.1";
  const USERNAME = "root";
  const PASSWORD = "root";
  const DBNAME = "testdb";
  //私有化构造函数,防止外界实例化对象
  private function __construct()
  {
    $this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,
      self::PASSWORD,self::DBNAME);
  }
  //私有化克隆函数,防止外界克隆对象
  private function __clone()
  {
  }
  //单例访问统一入口
  public static function getInstance()
  {
    if(!(self::$instance instanceof self))
    {
      self::$instance = new self();
    }
    return self::$instance;
  }
  //数据库查询操作
  public function getinfo()
  {
    $sql = "select * from testtb";
    $res = mysqli_query($this->db,$sql);
    while($row = mysqli_fetch_array($res)) {
      echo $row[&#39;testcol&#39;] . &#39;<br />&#39;;
    }
    mysqli_free_result($res);
  }
}
$mysqli = Db::getInstance();
$mysqli->getinfo();
?>
Copy after login

Articles you may be interested in:

PHP Design Pattern Prototype Design Pattern Principles and Usage Analysis PHP Skills

laravel Implementation method of sending verification code via SMS php example

##PHP receiveMail implements the function of receiving emails php example

The above is the detailed content of PHP design pattern singleton pattern principle and implementation method analysis php skills. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!