溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

(PHP學(xué)習(xí)筆記)工廠類(lèi)在MVC框架中的運(yùn)用

發(fā)布時(shí)間:2020-07-06 20:46:02 來(lái)源:網(wǎng)絡(luò) 閱讀:313 作者:w1sw 欄目:數(shù)據(jù)庫(kù)

    在基本的MVC框架模型中,會(huì)引用到數(shù)據(jù)庫(kù)和模板文件。但是不同的開(kāi)發(fā)者會(huì)選擇不同的數(shù)據(jù)庫(kù)以及模板引擎。因?yàn)樵趯?shí)際開(kāi)發(fā)的過(guò)程中,有可能會(huì)更換數(shù)據(jù)庫(kù)或者是模板引擎,如果針對(duì)每個(gè)數(shù)據(jù)庫(kù)以及模板引擎都來(lái)寫(xiě)一個(gè)接口來(lái)調(diào)用的話,將會(huì)十分繁瑣。所以工廠類(lèi)的出現(xiàn),很好的解決了這個(gè)問(wèn)題。

    在此我定義一個(gè)數(shù)據(jù)庫(kù)工廠類(lèi)以及一個(gè)模板引擎工廠類(lèi)。

1、首先來(lái)看看數(shù)據(jù)庫(kù)工廠類(lèi):

    在此假設(shè)我使用的是mysql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)工廠類(lèi)中封裝了實(shí)例化數(shù)據(jù)庫(kù)(使用何種數(shù)據(jù)庫(kù))的方法以及數(shù)據(jù)庫(kù)操作(增刪改查等等)的相關(guān)方法。

    在使用數(shù)據(jù)庫(kù)工廠類(lèi)的時(shí),首先確定使用的是什么數(shù)據(jù)庫(kù)。在此我就需要在數(shù)據(jù)庫(kù)工廠類(lèi)中寫(xiě)一個(gè)初始化方法,如下所示,$dbtype是指定使用的數(shù)據(jù)庫(kù)類(lèi)型,$config則是傳入該數(shù)據(jù)庫(kù)的配置信息。

public static function init($dbtype, $config) {
self::$db = new $dbtype;
self::$db->connect($config);
}

    初始化數(shù)據(jù)庫(kù)后,就可以調(diào)用各個(gè)數(shù)據(jù)庫(kù)的操作方法,我們?cè)诠S類(lèi)中定義的方法是可供任意種類(lèi)的數(shù)據(jù)庫(kù)使用的。例如插入方法:

public static function insert($table,$arr){
return self::$db->insert($table,$arr);
}

    在此定義兩個(gè)參數(shù),一個(gè)表名,一個(gè)插入的數(shù)據(jù)。然后調(diào)用的是mysql數(shù)據(jù)庫(kù)的insert方法,來(lái)實(shí)現(xiàn)具體的插入操作。

    總結(jié):使用數(shù)據(jù)庫(kù)工廠類(lèi),即為了所需的數(shù)據(jù)庫(kù)相關(guān)功能定義了一個(gè)標(biāo)準(zhǔn),無(wú)論傳入什么數(shù)據(jù)庫(kù),都可以獲取到該數(shù)據(jù)庫(kù)的實(shí)例化對(duì)象。我們只需要定義好工廠類(lèi)中各操作方法以便調(diào)用實(shí)際的數(shù)據(jù)庫(kù)操作方法即可。


2、模板引擎工廠類(lèi)

    與數(shù)據(jù)庫(kù)工廠類(lèi)相似,在模板引擎工廠類(lèi)中,不針對(duì)任何一種模板文件。同樣的定義了初始化模板引擎的方法,以便確定使用何種模板引擎。

    在此假設(shè)我們使用的模板引擎為Smarty模板,初始化方法如下:

public static function init($viewtype,$config){
self::$view = new $viewtype;
foreach($config as $key=>$value){
self::$view -> $key = $value;
}

    $viewtype為視圖模板的類(lèi)型,$config為配置信息(此處為數(shù)組文件)。

    在確定好視圖模板引擎后,與數(shù)據(jù)庫(kù)工廠類(lèi)一樣,可以定義相關(guān)功能的方法,來(lái)調(diào)用實(shí)際的模板引擎操作方法即可。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI