PHP设计模式之单例模式原理与实现方法分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-09-12 15:13:21 浏览: 评论:0
本文实例讲述了PHP设计模式之单例模式原理与实现方法。分享给大家供大家参考,具体如下:
一、什么是单例模式
作为对象的创建模式,单例模式确保某一个类只有一个实例,并且对外提供这个全局实例的访问入口,它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
二、PHP单例模式三要素
1. 需要一个保存类的唯一实例的静态成员变量。
2. 构造函数和克隆函数必须声明为私有的,防止外部程序创建或复制实例副本。
3. 必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用。
三、为什么使用单例模式
使用单例模式的好处很大,以数据库操作为例。若不采用单例模式,当程序中出现大量数据库操作时,每次都要执行new操作,每次都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都是对数据库的一种极大考验和浪费。使用了单例模式,只需要实例化一次,不需要每次都执行new操作,极大降低了资源的耗费。
四、单例模式示例
这里以数据库操作为例
- <?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['testcol'] . '<br />';
- }
- mysqli_free_result($res);
- }
- }
- $mysqli = Db::getInstance();
- $mysqli->getinfo();
- ?>
Tags: PHP设计模式 PHP单例模式
相关文章
- ·php设计模式——单例模式(Singleton)的常见应用场景(2015-04-15)
- ·php 设计模式之单例模式例子(2016-07-27)
- ·PHP设计模式之:单例模式的学习笔记(2016-07-29)
- ·PHP设计模式之:注册模式入门教程(2016-07-29)
- ·PHP设计模式之:适配器模式入门教程(2016-07-29)
- ·PHP设计模式之:数据映射模式教程(2016-07-29)
- ·PHP设计模式之:观察者模式学习笔记(2016-07-29)
- ·PHP常用设计模式之委托设计模式(2021-07-09)
- ·php设计模式之委托模式(2021-07-09)
- ·PHP设计模式之观察者模式实例(2021-07-10)
- ·PHP设计模式之模板方法模式定义与用法详解(2021-09-06)
- ·PHP设计模式之状态模式定义与用法详解(2021-09-06)
- ·PHP设计模式之装饰器模式定义与用法详解(2021-09-06)
- ·PHP设计模式之适配器模式定义与用法详解(2021-09-06)
- ·PHP设计模式之原型模式定义与用法详解(2021-09-06)
- ·PHP设计模式之工厂模式定义与用法详解(2021-09-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)