-1

私は現在、完全なアプリケーションを書いています。もちろん、最も重要な機能の 1 つはユーザー管理です。私はこれを完全に考えましたが、1つのトピックについてはまだわかりません。

ユーザー クラスには何を含める必要がありますか?

少なくとも user_id とユーザー名を User オブジェクトに保存するのは理にかなっているようです。おかげで、私はこれを非常に頻繁に必要とします。しかし、電子メール、住所、本名などの情報についてはどうでしょうか? この情報も User オブジェクトに配置しますか?

私は次のように考えていました: user_id とユーザー名をオブジェクト自体に保存するので、メソッドliek getUserId() と getUsername() でアクセスできます。このメソッド、驚きのサプライズは、$this->userId と $this->username を返します。

アドレスなどの他の情報については、メソッドも追加しようと考えていました。ただし、この情報はインスタンス変数には格納しません。メソッド getAddress() が UserMapper を呼び出すように、アドレスを取得するメソッドも作成します。

<?php
//UserMapper
public function getAdress() {
 $this->database->query('SELECT adress FROM users WHERE user_id = ?', array($this->getUserId));
 return $database('adress');
}

//User
public function getAdress() {
 return $this->userMapper->getAdress();
}
?>

または、この情報用に別のクラスを作成する必要がありますか?

4

2 に答える 2

0

ユーザーと人を区別することが重要です。

人には、名前、住所、DOB、その他の事実があります。ユーザーは、資格情報、秘密の質問、システム権限などを持っています。

ここで、ユーザーと人の関係は何かを自問してみてください。上記のブライアンが答えたように、デフォルトで2つを異なるクラスとテーブルに分割することをお勧めします。これにより、将来的には簡単になります。

これらを解決するいくつかの理由があります。

  1. ユーザーは、その存在全体を通じて同じままである可​​能性が高く、ユーザーに接続している人はそうではない可能性があります。
  2. パーミッションとロールのコンテキストで個人に関する情報が必要になることはめったにないため、ユーザークラスに不必要に浮かんでいる余分なデータがあります。このリストは続きます...

私は通常、ユーザーのものを次のクラスに分類します

   User (
        id
        login
        password
        password_expiredate
        enabled
        otherflags
        ) //(occasionally email, if it is used as login)

   Person (
        pid     // If it is not one to one between user and person
        user_id FK
        Name
        DOB
        Email 
        other relevant information
       )
   Address
       ( 
       person_pid
       type //home,work, etc
       Street
       City
       State
       Zip
       Country
       )
   Phone
      (
       person_pid
       type
       number
      )

クラスの作成に関しては、一般的に、それが良い習慣かどうかはわかりませんが、ユーザーに人を含めることを許可します。人には、それぞれの機能を持つ住所クラスと電話クラスが含まれます。

私の経験では、構造の正規化により、人とユーザーを使用するビジネスルールを柔軟に開発できます。

さらに、人はユーザーである必要はありません。

于 2012-08-30T13:54:30.193 に答える
0

いくつかの考え...

システムのユーザーがいて、どのユーザーとも異なる管理資格情報を持っている場合があります。私はそのようなクラスの名前に「ユーザー」を使用することを避ける傾向があり、「ログイン」や「資格情報」のようなものを好むことがよくあります。

複数の種類の認証情報がある場合があります... ユーザー名/パスワードに加えて、oauth、openid などの認証情報もある場合があります。通常、「ユーザー名」は電子メール アドレスになります。

あなたがやりたいことを処理するためのライブラリがすでにあるかもしれません。

おそらく、ユーザーの連絡先情報をログイン資格情報とは別に保存しますが、それはアプリの種類によって異なります。具体的には、特定の「ユーザー」に対して常に1つの物理アドレスしかないかどうかによって異なります。

ある種のログイン クラスを取得したら、表示/更新のアクセス許可を持つオブジェクトにログインを結合する、ある種のアクセス許可クラスを作成する傾向があります。

ところで、住所のスペルが間違っています。

于 2012-08-30T10:50:32.453 に答える