個性的すぎると思います。本当にどのような種類のアプリケーションが構築されているかによって異なります。CodeIgniter または Kohana から考えてみましょう。ただし、個々のフレームワークと個々のアプリケーションについて考えてみましょう。
ユーザーが名前と ID だけである単純なログイン システムがあり、すべての対話がアプリケーションの他のステージ間で行われる場合、ユーザー間の対話ではなく、ユーザーに関する情報のみを含むユーザー クラス (単純なテーブルから特定の情報を取得するデータベースへのクエリusers
)、ヘルパーになることができます。
ただし、一部のアプリケーション (この場合はプラットフォーム) では、ユーザーはその中の他のオブジェクトと同等である場合があります。
たとえば、フォーラムのようなアプリケーションを構築する場合、警告レベル、評判、ユーザー アクションのさまざまなログなどが必要になる場合があります。
また、ユーザーは「トピック」のような同等のオブジェクトであり、たとえば好き嫌い、優先度などもあります。
この場合、ユーザー用のモデルとコントローラーを作成します。たとえば、モデルには次のようなメソッドがあります
createUser(), getUser(), getUserWarnActions(), updateUserActions(), logUserActionChange()
など
UserModel
そのすべてのメソッドは、モデルのメイン クラスを拡張するie というクラスになります。
たとえば、UserActions は警告レベル、電子メールの変更、ユーザー名の変更、評価の変更です。
あなたのコントローラでは、あなたがしたいかもしれません
updateWarnLevel()
=> と相互作用しupdateUserActions()
、アクション = 警告レベルであることをモデルに伝え、指定された値で更新します
したがって、これらのメソッドはUserController
、コントローラーのメインクラスを拡張するクラス、つまり呼び出されるクラスになります
しかし、実際には User クラスをどのように見るかによって異なります。私によると、それは別の抽象化の一部であり、個々の抽象化ではないため、警告レベルと呼ばれるコントローラー/モデルを持つことは悪い習慣です。
どちらが子か親かを推測するには、db のような構造を作成してから、モデル/コントローラー/ヘルパーを作成します。
次のデータベース テーブルがある場合:
- ユーザー
- ユーザーの評判
- user_warnlevels
- トピック
- topic_votes
- warn_levels // id を含む | レベル | something_which_depends_on_the_level
それは間違いなく、アプリケーションのモデル/コントローラーになることUsers
を意味しますが、ロジックがあるという理由だけで別のテーブルであるため、そうではありませんが、親テーブルではなく、子テーブルのみですTopics
warn_levels