2011-09-22 33 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

相关问题