詳解PHP封裝的一個單例模式Mysql操作類

來源:互聯網
上載者:User
PHP封裝的一個單例模式Mysql操作類在php中有著重要的作用,本文將詳細的講解其相關知識。

PHP封裝的一個單例模式Mysql操作類

掌握滿足單例模式的必要條件----三私一公。

①私人的構造方法-為了防止在類外使用new關鍵字執行個體化對象。

②私人的成員屬性-為了防止在類外引入這個存放對象的屬性。

③私人的複製方法-為了防止在類外通過clone成生另一個對象。

④公有的靜態方法-為了讓使用者進行執行個體化對象的操作。

DB類及相關表操作;

class mysql_db{   //1.私人的靜態屬性  private static $dbcon = false;   //2.私人的構造方法  private function __construct(){    $dbconn = @mysql_connect("localhost","root","");    mysql_select_db("test",$dbconn) or die("mysql_connect error");    mysql_query("SET NAMES utf8");  }   //3.私人的複製方法  private function __clone() {     }   //1.公有的靜態方法  public static function getIntance() {    if(self::$dbcon==false){         self::$dbcon=new self;    }    return self::$dbcon;  }  //執行語句  public function query($sql) {    $query=mysql_query($sql);       return $query;  }  /**  * 查詢某個欄位  * @param  * @return string or int  */  public function getOne($sql) {    $query = $this->query($sql);      return mysql_result($query,0);  }   //擷取一行記錄,return array 一維數組  public function getRow($sql,$type="assoc") {      $query=$this->query($sql);         if(!in_array($type,array("assoc",'array',"row"))) {         die("mysql_query error");       }      $funcname = "mysql_fetch_".$type;        return $funcname($query);  }   //擷取一條記錄,前置條件通過資源擷取一條記錄  public function getFormSource($query,$type="assoc"){        if(!in_array($type,array("assoc","array","row"))) {        die("mysql_query error");     }     $funcname = "mysql_fetch_".$type;        return $funcname($query);  }  //擷取多條資料,二維數組  public function getAll($sql){      $query=$this->query($sql);      $list=array();        while ($r=$this->getFormSource($query)) {        $list[]=$r;      }       return $list;  }   //獲得最後一條記錄id  public function getInsertid(){      return mysql_insert_id();  }   /**   * 定義添加資料的方法   * @param string $table 表名   * @param string orarray $data [資料]   * @return int 最新添加的id   */   public function insert($table,$data){     //遍曆數組,得到每一個欄位和欄位的值     $key_str='';     $v_str='';       foreach($data as $key=>$v) {          if(empty($v)) {            die("error");      }          //$key的值是每一個欄位s一個欄位所對應的值      $key_str.=$key.',';      $v_str.="'$v',";   }   $key_str=trim($key_str,',');   $v_str=trim($v_str,',');   //判斷資料是否為空白   $sql="insert into $table ($key_str) values ($v_str)";     $this->query($sql);   //返回上一次增加操做產生ID值   return mysql_insert_id(); } /*  * 刪除一條資料方法  * @param1 $table, $where=array('id'=>'1') 表名 條件  * @return 受影響的行數  */  public function deleteOne($table, $where){        if(is_array($where)){             foreach ($where as $key => $val) {        $condition = $key.'='.$val;      }    } else {      $condition = $where;    }    $sql = "delete from $table where $condition";    $this->query($sql);    //返回受影響的行數    return mysql_affected_rows();  }  /*  * 刪除多條資料方法  * @param1 $table, $where 表名 條件  * @return 受影響的行數  */  public function deleteAll($table, $where){         if(is_array($where)){           foreach ($where as $key => $val) {                 if(is_array($val)){          $condition = $key.' in ('.implode(',', $val) .')';        } else {          $condition = $key. '=' .$val;        }      }    } else {      $condition = $where;    }    $sql = "delete from $table where $condition";    $this->query($sql);    //返回受影響的行數    return mysql_affected_rows();  } /**  * [修改操作description]  * @param [type] $table [表名]  * @param [type] $data [資料]  * @param [type] $where [條件]  * @return [type]  */ public function update($table,$data,$where) {   //遍曆數組,得到每一個欄位和欄位的值      $str='';  foreach($data as $key=>$v){      $str.="$key='$v',";  }     $str=rtrim($str,',');  //修改SQL語句     $sql="update $table set $str where $where";  $this->query($sql);  //返回受影響的行數     return mysql_affected_rows(); }}

本篇文章詳解了PHP封裝的一個單例模式Mysql操作類相關知識,更多相關知識請關注php中文網。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.