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