欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP設(shè)計模式之單例模式原理與實現(xiàn)方法分析

 更新時間:2018年04月25日 10:45:28   作者:編程人,在天涯  
這篇文章主要介紹了PHP設(shè)計模式之單例模式原理與實現(xiàn)方法,簡單介紹了單例模式的概念、功能、組成并結(jié)合實例形式分析了php定義與使用單例模式的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了PHP設(shè)計模式之單例模式原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:

一、什么是單例模式

作為對象的創(chuàng)建模式,單例模式確保某一個類只有一個實例,并且對外提供這個全局實例的訪問入口。它不會創(chuàng)建實例副本,而是會向單例類內(nèi)部存儲的實例返回一個引用。

二、PHP單例模式三要素

1. 需要一個保存類的唯一實例的靜態(tài)成員變量。

2. 構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,防止外部程序創(chuàng)建或復(fù)制實例副本。

3. 必須提供一個訪問這個實例的公共靜態(tài)方法,從而返回唯一實例的一個引用。

三、為什么使用單例模式

使用單例模式的好處很大,以數(shù)據(jù)庫操作為例。若不采用單例模式,當(dāng)程序中出現(xiàn)大量數(shù)據(jù)庫操作時,每次都要執(zhí)行new操作,每次都會消耗大量的內(nèi)存資源和系統(tǒng)資源,而且每次打開和關(guān)閉數(shù)據(jù)庫連接都是對數(shù)據(jù)庫的一種極大考驗和浪費。使用了單例模式,只需要實例化一次,不需要每次都執(zhí)行new操作,極大降低了資源的耗費。

四、單例模式示例

這里以數(shù)據(jù)庫操作為例

<?php
/**
*  單例模式
**/
class Db
{
  //保存全局實例
  private static $instance;
  //數(shù)據(jù)庫連接句柄
  private $db;
  //數(shù)據(jù)庫連接參數(shù)
  const HOSTNAME = "127.0.0.1";
  const USERNAME = "root";
  const PASSWORD = "root";
  const DBNAME = "testdb";
  //私有化構(gòu)造函數(shù),防止外界實例化對象
  private function __construct()
  {
    $this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,
      self::PASSWORD,self::DBNAME);
  }
  //私有化克隆函數(shù),防止外界克隆對象
  private function __clone()
  {
  }
  //單例訪問統(tǒng)一入口
  public static function getInstance()
  {
    if(!(self::$instance instanceof self))
    {
      self::$instance = new self();
    }
    return self::$instance;
  }
  //數(shù)據(jù)庫查詢操作
  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();
?>

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計有所幫助。

相關(guān)文章

最新評論