標籤:oca 訪問 username static 執行個體 常用 控制 軟體設計 資料
實現單例模式:單例模式是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個執行個體。
單例模式的邏輯:類裡面聲明一個靜態方法和變數,靜態變數用來儲存唯一的執行個體,靜態方法作為類向外的唯一的介面,並在裡面做判斷,當靜態變數有執行個體時候直接返回,沒有則new一個執行個體賦值在靜態變數裡面。建構函式裡面放連結資料庫的操作,因為靜態方法中實現了控制了只執行個體化一次,所以達到只連結資料庫一次。在類外部存取靜態方法;
簡單類如下:
1 class Con_db{ 2 private static $dbObj = null; 3 private $con; 4 private $result; 5 private $row; 6 private $newsItem; 7 /** 8 * 建構函式 9 * @param [type] $host [資料庫地址]10 * @param [type] $username [資料庫名稱]11 * @param [type] $psw [資料庫密碼]12 * @param [type] $database [資料庫]13 */14 private function __construct($host,$username,$psw,$database){15 $this->con = mysql_connect($host,$username,$psw);16 if(!$this->con){17 die("連結失敗");18 }19 mysql_set_charset("utf-8");20 mysql_select_db($database);21 }22 /**23 * 擷取一次性對象24 * @return 執行個體對象25 */26 public static function getInstance($host,$username,$psw,$database){27 if(is_null(self::$dbObj)){28 self::$dbObj = new self($host,$username,$psw,$database);29 }30 return self::$dbObj;31 }32 33 /**34 * 資料庫查詢語句35 */36 private function query($sql){37 if($sql){38 $this->result = mysql_query($sql);39 if($this->result && mysql_num_rows($this->result)){40 return $this->result;41 }else{42 return false;43 }44 }else{45 die("必須填寫查詢語句!");46 } 47 }48 /**49 * 查詢多條語句50 * @param $SQL 查詢語句51 * return string;52 */53 private function getAll($sql){54 $this->result = mysql_query($sql);55 if($this->result && mysql_num_rows($this->result)){56 $this->newsItem = array();57 while($this->row = mysql_fetch_assoc($this->result)){58 $this->newsItem[] = $this->row;59 }60 }61 return $this->newsItem;62 }63 /**64 * 查詢一條語句65 * @param $SQL 查詢語句66 * return string;67 */68 private function getone($sql){69 $this->result = mysql_query($sql);70 if($this->result && mysql_num_rows($this->result)){71 return $this->row = mysql_fetch_assoc($this->result);72 }73 }74 }75 $db = Con_db::getInstance("localhost","root","root","szwengdo_com");76 $sql = "select * from wd_cases";77 $row = $db->getone($sql);78 var_dump($row);
第一次研究,希望改正!!
php單例模式實現資料庫類