我正在登錄系統上工作。我試圖避免重複代碼,並儘可能地分離責任。如何從我的邏輯中將查詢分離到數據庫 - 分離責任,基本上
讓我們假設我有一個Authentication
類執行以下操作:
class Authentication
{
public function login($username, $password);
public function logout();
}
下鄉樹遠一點,我到一個地步,我需要的用戶與在憑證輸入比較憑據數據庫。
總的來說,我可以抽象出一個特定的點,我需要對某些事物進行實際的唯一查詢。
例如,對於登錄功能我需要像查詢:
$dbPDO->prepare("SELECT $loginUsername, FROM $tableName WHERE $loginUsername=:username");
對於registrying用戶我需要像查詢:
$dbPDO->prepare("INSERT INTO $tableName($loginUsername, $loginPassword, $loginEmail) VALUES (:username, :password, :email)");
等等等等向前。
這是我的問題/關注,無論你想調用它。
一般來說,我建立一個只做某件事和某件事的類。我並不想將查詢與邏輯混合(可以這麼說)。
編寫一個只關注查詢的類(或別的東西,比如一個接口,我不知道)是不是一個好主意。或者,將查詢與邏輯混合在一起可以嗎?
我真的很希望我以一種可以理解的方式解釋我自己。
即使通過設置一個存儲庫(基於一個抽象類可能非常通用),我建議只從該存儲庫生成查詢,並將所有DML和DDL內容放入單個數據庫圖層對象中以用於維護目的。 – 2014-09-02 08:41:23