用单例模式来设计一个PHP数据库类_PHP教程
最近感觉网站的数据库压力比较大,造成网站的速度下降得很厉害。因为有相当一部分的页面是直接连接数据库读数据的,所以把这部分的页面也改为使用数据库单例类来实现。现在基本都统一使用下面这个类来连接数据库了。
<?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); } } ?>
这个类的使用如下:
$connector = nmdb::get_class_nmdb($host, $username, $password); $connector -> select_db($database);
下面的类也可以参考下:
<?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'; } ?>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

JS 单例模式是一种常用的设计模式,它可以保证一个类只有一个实例。这种模式主要用于管理全局变量,避免命名冲突和重复加载,同时也可以减少内存占用,提高代码的可维护性和可扩展性。

单例模式:通过函数重载提供不同参数的单例实例。工厂模式:通过函数重写创建不同类型的对象,实现创建过程与具体产品类的解耦。

在软件开发中,常常遇到多个对象需要访问同一个资源的情况。为了避免资源冲突以及提高程序的效率,我们可以使用设计模式。其中,单例模式是一种常用的创建对象的方式,即保证一个类只有一个实例,并提供全局访问。本文将为大家介绍如何使用PHP实现单例模式,并提供一些最佳实践的建议。一、什么是单例模式单例模式是一种常用的创建对象的方式,它的特点是保证一个类只有一个实例,并提

Singleton模式确保一个类只有一个实例,并提供了一个全局的访问点。它确保在应用程序中只有一个对象可用,并处于受控状态。Singleton模式提供了一种访问其唯一对象的方式,可以直接访问,而无需实例化类的对象。示例<?php classdatabase{ publicstatic$connection; privatefunc

导言PHP设计模式是一组经过验证的解决方案,用于解决软件开发中常见的挑战。通过遵循这些模式,开发者可以创建优雅、健壮和可维护的代码。它们帮助开发者遵循SOLID原则(单一职责、开放-封闭、Liskov替换、接口隔离和依赖反转),从而提高代码的可读性、可维护性和可扩展性。设计模式的类型有许多不同的设计模式,每种模式都有其独特的目的和优点。以下是一些最常用的php设计模式:单例模式:确保一个类只有一个实例,并提供一种全局访问此实例的方法。工厂模式:创建一个对象,而不指定其确切类。它允许开发者根据条件

单例模式在PHP分布式系统中的应用场景和线程安全流程引言:随着互联网的迅猛发展,分布式系统已成为现代软件开发的热门话题。而在分布式系统中,线程安全一直是一个重要的问题。在PHP开发中,单例模式是一种常用的设计模式,它可以有效地解决资源共享和线程安全的问题。本文将重点讨论单例模式在PHP分布式系统中的应用场景和线程安全流程,并提供具体的代码示例。一、单例模式的

1.什么是PHP设计模式?PHP设计模式是预定义的代码模板,旨在解决常见的软件开发问题。它们提供了经过验证的解决方案,可以提高代码的可重用性、可维护性和可扩展性。2.PHP设计模式的类型php中有许多不同的设计模式,每种模式都有其特定的用途。最常见的模式包括:单例模式:确保一个类只有一个实例。工厂模式:根据传给它的数据创建不同类型的对象。策略模式:允许程序在运行时更改其行为。观察者模式:允许对象订阅事件并在事件发生时获得通知。3.单例模式示例classSingleInstance{private

单例模式在PHP中的常见应用场景剖析概述:单例模式(SingletonPattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在PHP中,使用单例模式可以有效地限制类的实例化次数和资源占用,提高代码的性能和可维护性。本文将通过分析常见的应用场景,给出具体的PHP代码示例,来说明单例模式的使用方法和好处。数据库连接管
