• 售前

  • 售后

热门帖子
入门百科

PHP设计模式之单例模式原理与实现方法分析

[复制链接]
必须更多木 显示全部楼层 发表于 2021-10-25 20:20:48 |阅读模式 打印 上一主题 下一主题
本文实例报告了PHP计划模式之单例模式原理与实现方法。分享给大家供大家参考,详细如下:
一、什么是单例模式
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且对外提供这个全局实例的访问入口。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
二、PHP单例模式三要素
1. 需要一个生存类的唯一实例的静态成员变量。
2. 构造函数和克隆函数必须声明为私有的,防止外部步伐创建或复制实例副本。
3. 必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用。
三、为什么使用单例模式
使用单例模式的长处很大,以数据库利用为例。若不采用单例模式,当步伐中出现大量数据库利用时,每次都要执行new利用,每次都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都是对数据库的一种极大磨练和浪费。使用了单例模式,只需要实例化一次,不需要每次都执行new利用,极大低落了资源的耗费。
四、单例模式示例
这里以数据库利用为例
  1. <?php
  2. /**
  3. *  单例模式
  4. **/
  5. class Db
  6. {
  7.   //保存全局实例
  8.   private static $instance;
  9.   //数据库连接句柄
  10.   private $db;
  11.   //数据库连接参数
  12.   const HOSTNAME = "127.0.0.1";
  13.   const USERNAME = "root";
  14.   const PASSWORD = "root";
  15.   const DBNAME = "testdb";
  16.   //私有化构造函数,防止外界实例化对象
  17.   private function __construct()
  18.   {
  19.     $this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,
  20.       self::PASSWORD,self::DBNAME);
  21.   }
  22.   //私有化克隆函数,防止外界克隆对象
  23.   private function __clone()
  24.   {
  25.   }
  26.   //单例访问统一入口
  27.   public static function getInstance()
  28.   {
  29.     if(!(self::$instance instanceof self))
  30.     {
  31.       self::$instance = new self();
  32.     }
  33.     return self::$instance;
  34.   }
  35.   //数据库查询操作
  36.   public function getinfo()
  37.   {
  38.     $sql = "select * from testtb";
  39.     $res = mysqli_query($this->db,$sql);
  40.     while($row = mysqli_fetch_array($res)) {
  41.       echo $row['testcol'] . '<br />';
  42.     }
  43.     mysqli_free_result($res);
  44.   }
  45. }
  46. $mysqli = Db::getInstance();
  47. $mysqli->getinfo();
  48. ?>
复制代码
更多关于PHP相干内容感兴趣的读者可查察本站专题:《php面向对象步伐计划入门教程》、《PHP数组(Array)利用本事大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库利用入门教程》及《php常见数据库利用本事汇总》
希望本文所述对大家PHP步伐计划有所帮助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作