我有一個問題,理解使用繼承創建它們的類和子類的最佳實踐。繼承和繼承最佳實踐
比方說,我要實現我的項目
管理員,用戶3類型的用戶和聯繫人
聯繫這是一個用戶(使用全名,電子郵件,電話,其他聯繫方式)由管理員或用戶創建,他們不能登錄到系統。想象一下,他們只是每個用戶私人電話簿的成員。
用戶這是一個可以由管理員創建的用戶(同樣具有全名,電子郵件,電話和其他聯繫方式)。他們可以創建聯繫人,但不能創建其他用戶,他們可以登錄到系統。他們也可以(也應該)成爲管理員電話簿的成員。
管理這是一個用戶(同樣具有全名,電子郵件,電話和其他聯繫方式)。他們可以創建用戶和/或隱形眼鏡及(五言),他們可以登錄到系統中(爲了簡單起見,可以說,這些用戶通過Web形式的submittion創建)
的(簡體)屬性它們是:
聯繫:電子郵件,電話,城市,owner_id,date_in
用戶:電子郵件,電話,城市,owner_id,密碼,date_in
聯繫:電子郵件,電話,城市,密碼,date_in
數據庫表(用戶)是一樣的東西:
- ID:AUTO_INCREMENT
- owner_id:由誰這個用戶的ID創建用戶
- 全稱:文本
- 電子郵件:文字
- 電話:文字
- 城市:text
- user_type:(Contact ||用戶||管理員)
- date_in:日期時間,他們簽署了
- 密碼:(如果適用)
我一個不知道哇,我應該使用繼承...是下面的方案是否正確?
class Contact{
}
class User extends Contact{
}
class Admin extends User{
}
其他一些問題: 應該有管理的方法和用戶可以創建新的用戶(允許其命名爲create_user())。 但是他們每個人都應該進行不同的檢查並允許不同的選項,並向數據庫中插入不同類型的東西。這樣做的最佳做法是什麼?爲父類寫一個泛型並通過子類調用它,然後使用額外數據從子類更新條目? (例如:該管理員還應該將密碼存儲到數據庫中)
UPDATE:也許我還不夠清楚......
有將是通用的方法魚米之鄉,無關的類型用戶,這就是爲什麼我要繼承。我也想要一個共同的數據庫表。
我的主要問題就在這裏,是如何實現需要去不同的東西,如果它會不知常用的方法......例如,這是類「用戶」的user_create()
function user_create($email, $telephone){
dbquery("insert into users ....");
return insert_id();
}
是很好的做法,以實現對管理員同樣的方法是這樣的:
function user_create($email, $telephone, $user_type, $password=''){
$new_id = parent::user_create($email, $telephone);
if (user_type == 'User'){
query("UPDATE users SET type='User', password='$password' WHERE id='$new_id'");
}
return $new_id;
}
Rijndael,非常感謝! 關於命名。它只是一個命名約定,與實際問題無關,是實現繼承的最佳實踐。 另外使用接口是我知道的事情,而且再次,不是問題的一部分。 無論如何,謝謝阿迦 –