Home Backend Development PHP Tutorial Use singleton pattern to design a PHP database class_PHP tutorial

Use singleton pattern to design a PHP database class_PHP tutorial

Jul 13, 2016 am 10:33 AM
Singleton pattern

Recently, I feel that the website’s database is under a lot of pressure, causing the website’s speed to drop significantly. Because a considerable part of the pages are directly connected to the database to read data, this part of the pages is also changed to use the database singleton class to implement. Now the following class is basically used to connect to the database.

<?php
class nmdb 
{
	private $link;
	static private $_instance;
	// 连接数据库
	private function __construct($host, $username, $password)
	{
		$this->link = mysql_connect($host, $username, $password);
		$this->query("SET NAMES 'utf8'", $this->link);
		//echo mysql_errno($this->link) . ": " . mysql_error($link). "n";
		//var_dump($this->link);
		return $this->link;
	}
	
	private function __clone(){}
	
	public static function get_class_nmdb($host, $username, $password)
	{
        //$connector = new nmdb($host, $username, $password);
        //return $connector;
		
		if( FALSE == (self::$_instance instanceof self) )
		{
			self::$_instance = new self($host, $username, $password);
		}
		return self::$_instance;
    }
	
	// 连接数据表
	public function select_db($database)
	{
		$this->result = mysql_select_db($database);
		return $this->result;
	}
	
	// 执行SQL语句
	public function query($query)
	{
		return $this->result = mysql_query($query, $this->link);
	}
	
	// 将结果集保存为数组
	public function fetch_array($fetch_array)
	{
		return $this->result = mysql_fetch_array($fetch_array, MYSQL_ASSOC);
	}
	
	// 获得记录数目
	public function num_rows($query)
	{
		return $this->result = mysql_num_rows($query);
	}
	
	// 关闭数据库连接
	public function close()
	{
		return $this->result = mysql_close($this->link);
	}
	
}
?>
Copy after login

The usage of this class is as follows:

$connector = nmdb::get_class_nmdb($host, $username, $password);
$connector -> select_db($database);
Copy after login

You can also refer to the following classes:

<?php
/*
* mysql 单例
*/
class mysql{
    private $host    ='localhost'; //数据库主机
    private $user     = 'root'; //数据库用户名
    private $pwd     = ''; //数据库用户名密码
    private $database = 'imoro_imoro'; //数据库名
    private $charset = 'utf8'; //数据库编码,GBK,UTF8,gb2312
    private $link;             //数据库连接标识;
    private $rows;             //查询获取的多行数组
    static $_instance; //存储对象
    /**
     * 构造函数
     * 私有
     */
    private function __construct($pconnect = false) {
        if (!$pconnect) {
            $this->link = @ mysql_connect($this->host, $this->user, $this->pwd) or $this->err();
        } else {
            $this->link = @ mysql_pconnect($this->host, $this->user, $this->pwd) or $this->err();
        }
        mysql_select_db($this->database) or $this->err();
        $this->query("SET NAMES '{$this->charset}'", $this->link);
        return $this->link;
    }
    /**
     * 防止被克隆
     *
     */
    private function __clone(){}
    public static function getInstance($pconnect = false){
        if(FALSE == (self::$_instance instanceof self)){
            self::$_instance = new self($pconnect);
        }
        return self::$_instance;
    }
    /**
     * 查询
     */
    public function query($sql, $link = '') {
        $this->result = mysql_query($sql, $this->link) or $this->err($sql);
        return $this->result;
    }
    /**
     * 单行记录
     */
    public function getRow($sql, $type = MYSQL_ASSOC) {
        $result = $this->query($sql);
        return @ mysql_fetch_array($result, $type);
    }
    /**
     * 多行记录
     */
    public function getRows($sql, $type = MYSQL_ASSOC) {
        $result = $this->query($sql);
        while ($row = @ mysql_fetch_array($result, $type)) {
            $this->rows[] = $row;
        }
        return $this->rows;
    }
    /**
     * 错误信息输出
     */
    protected function err($sql = null) {
        //这里输出错误信息
        echo 'error';
        exit();
    }
}
//用例
$db = mysql::getInstance();
$db2 = mysql::getInstance();
$data = $db->getRows('select * from blog');
//print_r($data);
//判断两个对象是否相等
if($db === $db2){
    echo 'true';
}
?>
Copy after login

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/752473.htmlTechArticleRecently, I feel that the website’s database is under a lot of pressure, causing the website’s speed to drop significantly. Because a considerable part of the pages are directly connected to the database to read data, so this part...
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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

One article to understand the singleton pattern in JavaScript One article to understand the singleton pattern in JavaScript Apr 25, 2023 pm 07:53 PM

One article to understand the singleton pattern in JavaScript

The application of singleton mode and factory mode in C++ function overloading and rewriting The application of singleton mode and factory mode in C++ function overloading and rewriting Apr 19, 2024 pm 05:06 PM

The application of singleton mode and factory mode in C++ function overloading and rewriting

In PHP, what is the concept of singleton design pattern? In PHP, what is the concept of singleton design pattern? Aug 18, 2023 pm 02:25 PM

In PHP, what is the concept of singleton design pattern?

PHP Design Patterns: The Path to Code Excellence PHP Design Patterns: The Path to Code Excellence Feb 21, 2024 pm 05:30 PM

PHP Design Patterns: The Path to Code Excellence

Getting Started with PHP: Singleton Pattern Getting Started with PHP: Singleton Pattern May 20, 2023 am 08:13 AM

Getting Started with PHP: Singleton Pattern

Analysis of common application scenarios of singleton pattern in PHP Analysis of common application scenarios of singleton pattern in PHP Oct 15, 2023 pm 01:25 PM

Analysis of common application scenarios of singleton pattern in PHP

Singleton pattern in design patterns and application in PHP Singleton pattern in design patterns and application in PHP Oct 15, 2023 am 08:02 AM

Singleton pattern in design patterns and application in PHP

Application scenarios and thread safety processes of singleton mode in PHP distributed systems Application scenarios and thread safety processes of singleton mode in PHP distributed systems Oct 15, 2023 pm 04:48 PM

Application scenarios and thread safety processes of singleton mode in PHP distributed systems

See all articles