我正在研究一個Flash遊戲網站。我有兩個模型:遊戲和用戶和一箇中間表,其中我保留用戶的行爲,例如:「用戶1喜歡遊戲3」。「喜歡」功能的最佳做法
- 哪裏是我最喜歡的功能?
- 這是一個很好的做法,抓取當前用戶ID在遊戲模型?還是應該將它作爲參數傳遞?
由於性能方面的原因,我也增加了遊戲表中的喜歡字段。 我省略了檢查用戶是否已經喜歡遊戲,只是爲了保持簡單。
這裏是我的選擇:
第一個版本:
$user->like(12345);
class User
{
public function like($game_id)
{
$like = new User_Game();
$like->user_id = $this->id;
$like->game_id = $game_id;
$like->save();
$obj = new Game($game_id);
$obj->likes++;
$obj->save();
}
}
第二個版本:
$game->like(); // by current user
class Game
{
public function like()
{
$like = new User_Game();
$like->user_id = $_SESSION[‘user_id’];
$like->game_id = $this->id;
$like->save();
$this->likes++;
$this->save();
}
}
'在Game Model中抓取當前用戶標識是否是一個好習慣?'否'或者我應該將它作爲參數傳遞嗎?想一想,現在你將活動用戶的ID存儲在會話中,如果稍後將其存儲在其他地方,會發生什麼?更重要的是,你的功能只適用於當前活動的用戶,你不能「喜歡()」任何其他用戶。用戶ID是一個外部依賴項,絕對沒有理由將你的遊戲模型綁定到它,閱讀[依賴注入](http://en.wikipedia.org/wiki/Dependency_injection)。 – yannis