2014-01-18 28 views
1

比方說,我有用戶誰可以交朋友彼此,技術上,我如何解決這個問題在PHP中使用DAO?PHP DAO讓用戶交友(技術上)

數據庫:

users  | user_friends 
- userid | - userid_user1 
- username | - userid_user2 

PHP用戶對象:

class User 
{ 
    private $userid; 
    private $username; 

    // getters and setters 
} 

我應該用這個方法來籠絡用戶:

$u1 = UserDAO::getInstance()->findUserById(1); 
$u2 = UserDAO::getInstance()->findUserById(2); 

UserDAO::getInstance()->befriendUsers($u1, $u2); 

,或者我應該用這個方法:

$u1 = UserDAO::getInstance()->findUserById(1); 
$u2 = UserDAO::getInstance()->findUserById(2); 
$u1->befriend($u2); 

// befriend method would look like this in the User object 
public function befriend(User $u) 
{ 
    UserDAO::getInstance()->befriend($this, $u); 
} 

或者也許另一種方式?

+0

正如@MikeSW所說,這不是數據訪問對象的作用。 DAO應該映射應用程序中的對象並將它們保存到數據存儲區(數據庫,文件等)。它不應該包含任何業務邏輯,如友好用戶。 –

回答

2

其實沒有。 UserDAO處理用戶,但不處理用戶關係,這是一個不同的問題。

爲了簡單起見,你應該有另外一個關心朋友關係的FriendsDao。當然,當用戶被刪除時,你需要更新友誼。

+0

因此,在這種情況下,FriendsDAO有一個方法可以接受兩個User對象,然後將記錄保存到user_friends數據庫表中? – Stefan

+0

另外,返回User對象的UserDAO :: getInstance() - > findUserById(1)方法是DAO的一項任務嗎? – Stefan

+0

@Stefan是和是 – MikeSW