php設計模式之單例模式實例(設計mysqli鏈接數據的數據處理類)

一直在研究php的設計模式,可是沒有親歷使用過,因此仍是隻知其一;不知其二,經過幾天的學習終於對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>';

 還有第二種寫法:以下mysql

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>';
相關文章
相關標籤/搜索