PHP 單例模式 封裝鏈結mysql類

2021-09-19 12:42:17 字數 3797 閱讀 9089

<?php

/**describe:單例模式 資料庫類

單例模式的必要條件

(1)私有的構造方法-為了防止在類外使用new關鍵字例項化物件

(2)私有的成員屬性-為了防止在類外引入這個存放物件的屬性

(3)私有的轉殖方法-為了防止在類外通過clone成生另乙個物件

(4)公有的靜態方法-為了讓使用者進行例項化物件的操作

*/header("content-type:text/html;charset=utf-8");

final class db

mysqli_query($this->link,"set fields ".$this->charset);

return $this->link;

}//防止轉殖

private function __clone(){}

//靜態公共介面

public static function getinstance($hostfield,$userfield,$password,$datebase)

return self::$instance;}/*

*describe:查詢單個字段

*@param $field type:string 傳入需要篩選的字段

*@param $table_name type:string 需要查詢的表名

*@param $where type:array 需要篩選的where條件

*/public function getfield($field="",$table_name="",$where="") from where ";

$result = mysqli_query($this->link,$sql);

while($res = mysqli_fetch_array($result,mysql_assoc))

//若只有乙個陣列,則返回一維陣列

if(count($info)==1)else}}

/**describe:查詢單條語句

*@param $sql 查詢語句

*@param $type 返回陣列的型別

* mysql_assoc - 關聯陣列(預設)

* mysql_num - 數字陣列

* mysql_both -同時產生關聯和數字陣列

*/public function getrow($sql,$type=mysql_assoc)

/**describe:查詢多條語句

*@param $sql 查詢語句

*@param $type 返回陣列的型別

* mysql_assoc - 關聯陣列(預設)

* mysql_num - 數字陣列

* mysql_both -同時產生關聯和數字陣列

*/public function getrows($sql,$type=mysql_assoc)

return $res;}/*

*describe:增加語句

*@param type:array or string $info 傳入的值

若為陣列則進行拼接sql語句,並新增 返回新增的id

若傳入的為sql語句則直接執行,返回新增的id

*@param $table_name 為需要新增的表名(可選)

*/public function add($info,$table_name = "")

//$fields = substr($field,0,strlen($field)-1);

//$vals = substr($val,0,strlen($val)-1);

$fields = trim($field,",");

$vals = trim($val,",");

$sql = "insert into () values ()";

if(mysqli_query($this->link,$sql))else

//判斷是否為sql語句

}else if(is_string($info))else

}else}/*

*describe:更新

*@param type:array $info 傳入的修改的陣列

*@param type:string $table_name 需修改的表名

*@param type:array $where 修改的where條件,傳入陣列

*/public function update($info,$table_name = "",$where="")`='',";

}$fields = trim($field,",");

//拼接where條件

$where_string = "";

$where_string = $this->getwhere($where);

//拼接sql

$sql = "update set where ";

echo $sql;

die();

if(mysqli_query($this->link,$sql))else

}else}/*

*describe:刪除

*@param $where type:array 傳入需要刪除的where條件 為陣列

*@param $table_name type:string 需要刪除的表名

*/public function del($where,$table_name="") where ";

if(mysqli_query($this->link,$sql))else

}else}/*

*describe:執行原生sql

*@param $sql type:string 需要執行的sql

*/public function query($sql)else}/*

*describe:拼接where條件

*@param $where type:array 傳入where為陣列的條件

*/private function getwhere($where)` '' and ";

}}else`='' and ";}}

}return rtrim($where_string,"and ");}}

//測試 mysql類

$class = db::getinstance("localhost","root","123456","test");

$data = array(

"city_name"=>"test12222222",

"pid"=>"111111",

);$where = array(

"id"=>"438",

"city_name"=>array("like"=>"%test%"),

);//var_dump($class->query("delete from city where `city_name` like '%test%'"));

//var_dump($class->add($data,"city"));

//var_dump($class->del($where,"city"));

//var_dump($class->update($data,"city",$where));

//var_dump($class->getfield("city_name,pid","city",$where));

單例模式 封裝PHP的mysql類

describe 單例模式 資料庫類 單例模式的必要條件 1 私有的構造方法 為了防止在類外使用new關鍵字例項化物件 2 私有的成員屬性 為了防止在類外引入這個存放物件的屬性 3 私有的轉殖方法 為了防止在類外通過clone成生另乙個物件 4 公有的靜態方法 為了讓使用者進行例項化物件的操作 he...

PHP單例模式

模式對於oop開發人員尤其有用,因為他有助於建立穩定的api,並且仍然保持一定的靈活度。一種模式可以幫助我們定義負責完成特定任務的物件,還可以允許我們全部修改掉某個類而不用修改與這些類打交道的 前者被稱為類的職責,後者被稱為類的多型性。單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問...

php單例模式

單例模式 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 常用getinstance 方法進行例項化單例類,通過instanc...