Как обрабатывать разные типы аккаунтов в PHP? - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть 3 таблицы / модели с отношениями, показанными ниже:

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

Все они объединены ПЕРВИЧНЫМ КЛЮЧОМ Учетной записи, и у Пользователя и Компании есть очень разные наборы методов и полей.

Предполагая, что я знаю только «идентификатор учетной записи», и мне нужно загрузить учетную запись, я предполагаю, что следующая процедура является хорошей?

  1. Модель учетной записипри загрузке с идентификатором
  2. затем определяется «тип учетной записи»
  3. либо пользователь, либо объект компании загружается в сам объект учетной записи.Его можно использовать так:

    $ account-> company-> company_name ();

Почему-то это не очень эффективно ... может кто-нибудь предложитьчто-то лучше?

1 Ответ

1 голос
/ 23 сентября 2011

Вероятно, лучше всего, чтобы как Пользователь, так и Компания продлили Учетную запись, а учетная запись родительского класса не знала о дочерних классах (только родительские классы должны знать о родительском классе), поэтому, когда вам нужно добавить больше подклассов Учетной записи, вы не должныНе нужно ничего менять в учетной записи:

    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
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...