Wenn man wirklich seine Freund-Klasse und eine User-Klasse haben will, dann wäre es am Sinnvollsten, dass der Freund ein Proxy oder eine Delegator ist, der noch ein User-Objekt beinhaltet und alles was mit dem User zu tun hat weiterleitet und dann noch zusätzliche Informationen wie "befreundet seit" oder "freundschaft bestätigt" anbietet.
Da ja schon klar zu sein scheint, dass es auch um die Speicherung in eine relationale DB geht, sollte man meiner Meinung nach an einen ORM-ähnlichen Ansatz denken, auch wenn du vielleicht für den Lernfaktor nicht direkt ein fertiges ORM einfach nur konfigurieren willst.
Dann hättest du nämlich so etwas:
class User
public function __construct($name)
public function getFriends()
public function addFriend($user)
public function isFriendOf($user)
class Friendship
static public function getFriendsOf($user1)
public function __construct($user1, $user2)
public function isConfirmed()
public function confirm()
public function getUser1()
public function getUser2()
in der Datenbank dann eine Tabelle:
users
id | name | email ....
friendships
id | user1_id | user2_id | confirmed
und eine solche Beziehung:
User <1-*> Frienship <1-*> User
Da ja schon klar zu sein scheint, dass es auch um die Speicherung in eine relationale DB geht, sollte man meiner Meinung nach an einen ORM-ähnlichen Ansatz denken, auch wenn du vielleicht für den Lernfaktor nicht direkt ein fertiges ORM einfach nur konfigurieren willst.
Dann hättest du nämlich so etwas:
class User
public function __construct($name)
public function getFriends()
public function addFriend($user)
public function isFriendOf($user)
class Friendship
static public function getFriendsOf($user1)
public function __construct($user1, $user2)
public function isConfirmed()
public function confirm()
public function getUser1()
public function getUser2()
in der Datenbank dann eine Tabelle:
users
id | name | email ....
friendships
id | user1_id | user2_id | confirmed
und eine solche Beziehung:
User <1-*> Frienship <1-*> User
Kommentar