一直在研究php的設計模式,但是沒有親歷使用過,所以還是一知半解,通過幾天的學習終於對php的單例設計模式稍稍的有些了解,特此寫出一個數據庫處理類(只涉及到簡單的原理),以便自己以后方便查閱,至於其他設計模式我會慢慢理解,然后會以實例的形式發布到該博客:
/** * 單例模式 */ class Db{ private static $mysqli;//該類中的唯一一個實例 private function __construct(){}//防止在外部實例化該類 private function __clone(){}//禁止通過復制的方式實例化該類 public static function connect(){//數據庫連接方法 self::$mysqli = new MySQLi("localhost","root","","test"); self::$mysqli->query("set names utf8"); } public static function select($table){//數據庫操作方法,后續可以繼續完善和添加...... self::connect(); $result = self::$mysqli->query("select * from ".$table); $result_arr = array(); while($query = $result->fetch_assoc()){ $result_arr[] = $query; } return $result_arr;//結果集以數組的形式返回 } } $result = Db::select("article"); echo '<pre>'; print_r($result); echo '</pre>';
還有第二種寫法:如下
class Db{ private static $_instance = null;//該類中的唯一一個實例 private $dbConn; private function __construct(){//防止在外部實例化該類 $this->dbConn = new MySQLi("localhost","root","","test"); $this->dbConn->query("set names utf8"); } private function __clone(){}//禁止通過復制的方式實例化該類 public static function getInstance(){ if(self::$_instance == null){ self::$_instance = new self(); } return self::$_instance; } public function select($table){//數據庫操作方法,后續可以繼續完善和添加...... $result = $this->dbConn->query("select * from ".$table); $result_arr = array(); while($query = $result->fetch_assoc()){ $result_arr[] = $query; } return $result_arr;//結果集以數組的形式返回 } } $db = Db::getInstance(); $result = $db->select('article'); echo '<pre>'; print_r($result); echo '</pre>';