如何在PHP中处理不同的帐户类型?

时间:2011-09-22 21:28:09

标签: php mysql model schema

我有3个表/模型,其关系如下所示:

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

他们都加入了账户的主要密钥,而用户和公司各自拥有非常不同的方法和领域。

假设我只知道“帐户ID”,并且我需要加载一个帐户,我假设以下是一个好的程序?

  1. 帐户模型由ID
  2. 加载
  3. 然后确定“帐户类型”
  4. 将User或Company对象加载到Account对象本身。它可以像这样使用:

    $帐户 - >公司 - > COMPANY_NAME();

  5. 不知怎的,这看起来效率不高......有人能提出更好的建议吗?

1 个答案:

答案 0 :(得分:1)

可能最好让User和Company都扩展Account,并且父类Account不知道子类(只有子类应该知道父类)所以当你需要添加更多的Account子类时,你不要在帐户中需要更改任何内容:

    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
        }
    }