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


一直在研究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>';

 


免責聲明!

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



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