假設正在創建一個新文章,它也有記錄,所以:你將如何組織一個在兩個模型上運行的代碼?
INSERT INTO article VALUES ($name);
INSERT INTO logs VALUES ($name, GET_LAST_ID());
代碼:
class Article
{
public function add($name)
{
Sql::exec('INSERT INTO article VALUES ('.$name.')');
}
}
class Log
{
public function add($name)
{
Sql::exec('INSERT INTO logs VALUES ('.$name.', GET_LAST_ID());
}
}
在控制器
:
$article->add('s');
$log->add('s');
當然
(除了SQL劫持)它是壞的,它可以隨時重複,所以COPY + PASTE會是。你將如何組織一個新班級?它應該是AddArticleAndLogIt
?當然不是。
記錄的這個模型可以通過使用一個過程或觸發器來實現。創建一個觸發器,它將添加與添加的當前文章相同的值到日誌表。有些人反對數據庫中的商業邏輯,但我認爲這可能適合你的情況。 – Phiter
'日誌'僅用於此處還是服務?我會試圖讓一個「日誌記錄」服務獲取一組值並將它們記錄在某處?如果您願意,您可以決定在何處撥打記錄器。 –
@PhiterFernandes,不,對不起,我討厭任何一種「觀察者」模式,這是有氣味和不可預知的/不可預知的代碼的核心 –