2011-09-22 17 views
0

が、私は3つのテーブルを持っている/関係を持つモデルは、以下に例示する:PHPで異なるアカウントの種類を扱うには?

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

を彼らはすべてのアカウントのPRIMARY KEYによって結合され、そしてユーザーと当社各メソッドとフィールドの非常に異なるセットを持っています。

「アカウントID」のみがわかっていて、アカウントを読み込む必要があると仮定して、以下の手順が適切であると仮定していますか?

  1. アカウントモデルはID
  2. 「アカウントの種類」によってロードされた後、Accountオブジェクト自体にロードされ
  3. ユーザーまたは会社のオブジェクトのいずれか

  4. が決定されます。次のように使用できます。

    $ account-> company-> company_name();

何とかこれは非常に効率的ではないようです...誰かが何か良いことを提案できますか?

答えて

1

UserとCompanyの両方のアカウントを拡張し、親クラスのアカウントが子クラスについて知らないのがおそらく最良です(子クラスのみ親クラスについて知っておく必要があります)。したがって、さらに多くの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 
     } 
    } 
+0

総理にかなっていること...私はに実行する唯一の問題はある - 私はアカウントは、ユーザーまたは会社のためであれば事前に知っていない場合? – johnnietheblack

+0

例を挙げることができますか?私はあなたがオブジェクトのインスタンス化を延期することができる場合は、アカウントの種類がわかるまで待つか、実行時にオブジェクトを変更するのが問題でない場合は、オブジェクトを新しいアカウントに変更するだけですユーザーなど)。 – user558061

関連する問題