單例模式連接數據庫


單例模式的官方概念:單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。

通過單例模式可以保證系統中,應用該模式的一個類只有一個實例。即一個類只有一個對象實例。

首先要理解兩個概念:第一個是靜態方法(屬性),第二個是非靜態方法(屬性),

關鍵詞是 static,使用static聲明的變量和方法,只可以在本類中進行使用,而且不需要被實例化就可直接使用,

self:: 進行調用。靜態屬性和方法可以理解為在這個類中的全局變量和方法,可以在類中隨時被調用。

事例代碼

<?php
定義常量 define(
"DB_HOST", "127.0.0.1"); define("DB_USER", "root"); define("DB_PASSWORD", "root"); define("DB_DBNAME", "dml"); class db {
定義靜態變量d,存儲實例的對象
private static $d;
定義變量db存儲數據庫對象
protected $db;
protected $host; protected $user; protected $pwd; protected $dbname; private function __construct($host=DB_HOST,$user=DB_USER,$pwd=DB_PASSWORD,$dbname=DB_DBNAME) { $this->host=$host; $this->user=$user; $this->pwd=$pwd; $this->dbname=$dbname;
執行數據庫連接的操作
if (!$this->db) { $this->conn(); } }
數據庫連接的方法
private function conn() { $conn=new mysqli($this->host,$this->user,$this->pwd); if($conn->connect_error){ echo "數據庫連接失敗,錯誤信息:" . $conn->connect_error; }
連接數據庫 $conn
->select_db($this->dbname);
設置字符集 $conn
->set_charset("utf8"); $this->db=$conn; } 禁止克隆 private function __clone() { }
實例化類操作
public static function getdb() {
判斷變量d是否是這個類本身實例化的對象
if (!self::$d instanceof self) { self::$d = new self; } return self::$d; } 數據庫增刪改查操作 public function querydb($sql) { $res = $this->db->query($sql)->fetch_all(MYSQLI_ASSOC); return $res; } } 調用時,先調用實例化類的方法 $aa=db::getdb(); $res=$aa->querydb("SELECT * FROM `user`"); var_dump($res);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM