5

伝統的に MVC フレームワーク (CodeIgniter や Kohana など) では、さまざまなページを作成するときにコントローラーを作成します。ログインコントローラー、ホームコントローラーなどがあります。しかし、最近、目的指向プログラミングについて詳しく学び、それを使い始めたいと思っています。フレームワークはクラスを使用しますが、それはオブジェクトと同じ原理ではありません。

はい。ログインコントローラーはオブジェクトです。しかし、たとえば「ユーザー」クラスをどこに書くべきですか? それらをライブラリに書き込み、必要に応じてインポートしますか? もしあれば、これを行う適切な方法は何ですか。

どうすればこれを正しく行うことができるのか、私はただ困惑しています。

4

3 に答える 3

1

個性的すぎると思います。本当にどのような種類のアプリケーションが構築されているかによって異なります。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を意味しますが、ロジックがあるという理由だけで別のテーブルであるため、そうではありませんが、親テーブルではなく、子テーブルのみですTopicswarn_levels

于 2013-06-26T13:53:45.430 に答える
1

User クラスはコントローラーではなく (仮定)、URL を介して User クラスに直接アクセスするべきではないため、ライブラリとして記述することをお勧めします。したがって、オブジェクト指向にしたい場合は、クラスを作成することをお勧めします。または、静的関数が必要な場合は、ヘルパー ファイルを作成できます。

于 2013-06-26T13:10:10.550 に答える