<?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...