2011-09-22 53 views
0

我有3個表/與關係的模型圖所示:如何在PHP中處理不同的賬戶類型?

Account 
     | 
    ---------- 
    |  | 
User  Company 

它們都是由該帳戶的主鍵加入,用戶和公司各自有非常不同的方法集和領域。

假設我只知道「帳戶ID」,並且我需要加載一個帳戶,我假設以下是一個好的過程?

  1. 帳戶模型是由ID
  2. 「賬戶類型」加載然後確定
  3. 任一用戶或一公司的對象被加載到帳戶對象本身。它可以像這樣使用:

    $ account-> company-> company_name();

不知何故,這似乎不是很有效率......有人可以提出更好的建議嗎?

回答

1

可能最好同時擁有用戶和公司擴展帳戶,並且與父類不同的帳戶不知道子類(只有子類應該知道父類)因此,當您需要添加更多的帳戶子類時,不需要帳戶進行任何更改:

class Account { 
     var $email; 
     var $password; 

     function load() { 
      // load from db 
     } 
    } 

    class User extends Account { 
     var $first_name; 
     var $last_name; 

     function load() { 
      parent::load(); 
      // load for this class 
     } 
    } 

    class Company extends Account { 
     var $company_name; 

     function load() { 
      parent::load(); 
      // load for this class 
     } 
    } 
+0

這非常有意義......唯一的問題我碰到是 - 如果我不知道什麼時間提前,如果該帳戶是用戶或公司? – johnnietheblack

+0

你能舉個例子嗎?我猜如果你可以推遲對象的實例化,那麼只要推遲到知道帳戶的類型,或者如果在運行時改變對象不是問題,那麼只需將對象更改爲新對象(從Account到例如用戶)。 – user558061

相關問題