PHP单例模式如何设计?怎样与数据库连接?
Admin 2021-05-11 群英技术资讯 890 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole是一个面向生产环境的PHP异步网络通信引擎,使PHP开发人员可以编写高性能的异步并发TCP、UDP、Unix Socket、HTTP,WebSocket服务;swoole还可以广泛应用于互联网、企业软件、云计算、网络游戏等领域。
php中的标量数据类型总结 PHP 的数据类型可以分为三大类,分别是标量数据类型.复合数据类型和特殊数据类型. 其中,标量数据类型是数据结构的最基础单元,只能存储一个数据.在 PHP 中的标量数据类型分为四种,如下表所示: 类型 功能 boolean(布尔型) 最简单的数据类型,只有两个值:true(真) / false(假) string(字符串) 字符串是连续的字符序列 integer(整型) 整型包含所有的整数,可以是正数也可以是负数 float(浮点型) 浮点型也是用来表示数字的,与整型不同除了可以表示整数外它还可
今天小编就为大家分享一篇laravel 多图上传及图片的存储例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
这篇文章主要介绍了Laravel jwt 多表(多用户端)验证隔离的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
php7提示500错误的解决办法:1、找到Visual Studio2015和2017以及2019三合一的安装包;2、根据自己系统的版本选择,并下载安装即可。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008