常見專案開發框架都是支援多種不同資料庫型別的切換,例如:pdo、mysqli、sqlite等等這裡也做個簡單的筆記,基於簡單工廠模式編寫乙個可擴充套件的db資料庫支援;
/**
* 資料庫型別擴充套件介面
*/inte***ce
dbinte***ce
class
dbfactory
public
static
function
getinstance
($dbtype
)return self:
:$_dbins;}
/** * 由工廠類來統一初始化資料庫連線操作
** @param string $dbtype // 資料庫型別
** @return void
*/private
function
_connect
($host
,$user
,$passwd
,$port
=3306
,$dbname
)}
// 例項,mysqli擴充套件
class
dbmysqli
implements
dbinte***ce
/** * 查詢的資料表
** @param string $table // 查詢的資料表名稱
** @return dbmysqli
*/public
function
table
($table
)/**
* 查詢條件
** @param array $where // 查詢條件
** @return dbmysqli
*/public
function
where
(array
$where=[
])$this
->
_where
=implode
(' and '
,$_where);
return
$this;}
/** * 查詢一條結果資料
** @return null|array
*/public
function
find()
$this
->
query
($_sql);
if(is_null
($this
->
_query))
return
$this
->
_query
->
fetch_array
(mysqli_assoc);
}/**
* sql語句執行
** @param string $sql // sql語句
** @return null|mysqli_result
*/public
function
query
($sql
)public
function
close()
}
// 由工廠類進行資料庫型別例項化
// 若後期需要更多資料庫型別的支援,僅需要參照dbinte***ce介面類實現對應方法即可(增加新擴充套件類即可)
$db= dbfactory:
:getinstance
('mysqli');
// 執行條件查詢
var_dump
($db
->
table
('tp_image_extend')-
>
where([
'img_id'
=>1]
)->
find()
);// 關閉資料庫連線
$db-
>
close()
;
以上只是個實現思路,歡迎互相**交流! php的yii框架開發總結9
這一篇講解怎麼實現的自動發郵件的功能,我在網上查了很多資料,很多都是用定時檢測來實現的,我試過,效率太低,也卡了。後來就寫了乙個.bat檔案來實現重新整理頁面,用了windows的定時任務定時來執行該.bat檔案,成功實現了功能。bat檔案 echo offiexplore localhost yi...
php的yii框架開發總結6
mvc中的controller部分,所有的controller類都是繼承自controller基類,基類裡面包含actionadmin 管理員,actionindex 一般預設顯示,actionview 檢視某些資訊,actiondelete 刪除資料,actionupdate 修改資訊,actio...
php的yii框架開發總結3
利用yii裡面的gii工具可以很容易的自動建立資料表相應的的curd操作的基於mvc的檔案 modules array gii array class system.gii.giimodule password 這兒設定乙個密碼 瀏覽器開啟http localhost 8088 yii mysite...