PHP单例模式如何设计?怎样与数据库连接?
Admin 2021-05-11 群英技术资讯 1088 次浏览
PHP单例模式是什么?使用单例模式有什么好处?很多人新手在学习PHP时,对于单例模式不是很理解,下面就给大家介绍一下关于php单例模式,以及我们要如何设计单例模式和建立数据库连接。
一、什么是单例
wiki百科:单例模式,也叫单子模式,是一种常用的软件设计模式。 在应用这个模式时,单例对象的类必须保证只有一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。
二、为什么用单例
实际项目中像数据库查询,日志输出,全局回调,统一校验等模块。这些模块功能单一,但需要多次访问,如果能够全局唯一,多次复用会大大提升性能。这也就是单例存在的必要性。
三、单例模式的好处
1:减少频繁创建,节省了cpu。
2:静态对象公用,节省了内存。
3:功能解耦,代码已维护。
四、如何设计单例
通过上面的描述,单例的核心是,实例一次生成,全局唯一,多次调用。因此在单例模式必须包含三要素:
1:私有化构造函数,私有化clone。也就是不能new,不能clone。【唯一】
2:拥有一个静态变量,用于保存当前的类。【唯一如何保存】
3:提供一个公共的访问入口。【可以访问】
五、建立数据库连接
PS:功能上不太完整,以后再补充**__**
/**
* 单例模式连接数据库--面向对象
* */
//final关键字阻止此类被继承
final class sql2
{
static $instance;
static $connect;
protected $result;
//protected关键字阻止此类在外部进行实例化
protected function __construct($host, $user, $password)
{
self::$connect = @new mysqli($host, $user, $password);
if (self::$connect->connect_errno) {
die(iconv('gbk', 'utf-8', self::$connect->connect_error) . '(' . self::$connect->connect_errno . ')');
}
}
//protected关键字阻止此类在外部进行克隆
protected function __clone()
{
}
//当对象被销毁时关闭连接
function __destruct()
{
self::$connect->close();
}
//获取实例
static function getInstance($host, $user, $password)
{
self::$instance = self::$instance ?: new self($host, $user, $password);
return self::$instance;
}
//选择数据库
function set_db($db)
{
if (!self::$connect->select_db($db)) {
die(iconv('gbk', 'utf-8', self::$connect->error) . '(' . self::$connect->errno . ')');
}
}
//执行SQL语句
function query($query)
{
if (!($re = self::$connect->query($query))) {
die(iconv('gbk', 'utf-8', self::$connect->error) . '(' . self::$connect->errno . ')');
}
$this->result = $re;
return $re;
}
//以数组形式返回查询结果
function fetch_arr($query)
{
$re = $this->query($query);
$res = [];
while ($row = $re->fetch_assoc()) {
$res[] = $row;
}
return $res;
}
//获取记录数
function get_row()
{
return $this->result->num_rows;
}
}
$ins = sql2::getInstance('127.0.0.1', 'root', 'root');
$ins->set_db('houtai');
$re = $ins->fetch_arr('select * from user ');
//var_dump($re);
$ins->get_row();
现在大家对于PHP单例模式是什么以如何单例模式等应该都有所了解了,对于PHP于数据库进行连接是新手学习要掌握的内容,上述示例具有一定的借鉴价值,有需要的朋友可以参考一下,希望对大家学习有帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家介绍关于php实现rpc的操作,本文有具体代码和调用过程,具有一定的借鉴价值,感兴趣的朋友可以参考学习,下面我们就一起来看看具体操作吧。
这篇文章主要介绍了PHP实现提取多维数组指定一列的方法,结合实例形式总结分析了PHP针对多维数组的遍历、转换、提取等相关操作技巧,需要的朋友可以参考下
有时,为了避免if语句过于冗长,提高程序的可读性,可以使用switch分支控制语句。switch 语句用于根据多个不同条件执行不同动作。
Cookie与Session一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。Cookie分为两种,一种可以叫做session...
这篇文章主要介绍了php操作redis数据库常见方法,结合实例形式总结分析了PHP操作redis数据库的基本安装、连接、字符串、哈希表、列表、集合等相关操作技巧,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008