1

MVCの概念を理解するのに問題があります。

私はユーザーモデルを構築していますね。Application_Model_Users。モデルには構造のみを含める必要があり、ビジネスロジックはコントローラーに配置する必要があると言われています。

したがって、authenticate($ user、$ password)という関数について考えてみます。この関数は、入力されたユーザー名とパスワードが有効な場合はtrueを返し、そうでない場合はfalseを返します。この関数はどこに置くべきですか?コントローラ認証またはモデルユーザー?

ありがとうございました!

4

2 に答える 2

1

モデル操作にはストレージ操作(DB、サービサーなど)が含まれることがよくありますが、これに限定されるものではありません。モデルは、私が知る限り、ビジネスロジックエンティティ、つまり、User、Person、Customerなどのビジネスエンティティを表すクラスをカウントする必要があります。各クラスは、独自の操作メソッドを定義する必要があります。たとえば、Personモデルクラスは、人の名前を取得したり、生年月日に従って年齢を計算したりすることができます。

また、モデルの保存と取得に特化したクラスが必要です。これらのクラスを使用すると、特定の条件などを使用してすべての顧客を取得したり、1つだけを取得したり、変更した顧客クラスインスタンスを保存したりできます(たとえば、顧客が住所や電話番号を変更した場合)。

これにより、ストレージ/取得操作がビジネスログイン操作から分離されます。

したがって、あなたの質問によると、モデルには、ユーザー名とパスワードで1人のユーザーを見つけることができるクラスが含まれている可能性があります。ユーザーが見つかった場合は、Model_Userクラスインスタンスを返すことができます(例)。次に、標準のZend_Authクラスを使用するか、それを拡張して独自の認証クラスを作成し、いくつかのログインフォームパラメーターを使用してユーザー認証を実行できます。

ZendFrameworkクイックスタートガイドに従ってください。ZendFrameworkのMVCに関する基本事項があります。また、DBとの対話を可能にするために、Zend_Dbおよび関連するクラスに関するいくつかのリソースがあります。Zend_Db_Table、Zend_Db_Table_Rowset、およびZend_Db_Table_Rowクラスもあり、モデルストレージのニーズに合わせて拡張できます。

Model_Userエンティティを格納またはクエリするために使用されるModel_UserTableクラスのZend_Db_Tableを拡張する個人的なソリューションがあります。そして、私のModel_UserクラスはZend_Db_Table_Rowを拡張します。

于 2011-06-08T21:46:29.817 に答える
1

モデルに関連して、(DB、Web サービス、ファイルシステムから) データを取得する必要があるとき、またはデータを保存する必要があるときはいつでも、ジョブを実行するためのモデルが必要です。MVC では、モデルはマップされたテーブルとして理解されず、おそらくマッパーに似ています。Zend のサイトにこれに関する情報があり、mvc をもう少し理解するのに役立ちます。

ユーザー認証に関しては、ユーザーモデル内に認証機能を実装する必要があります。テーブルなどに対してデータベースチェックを行うと思います。まだ使用していない場合に備えて、Zend には認証用のパッケージが付属しています: Zend_Auth (http://framework.zend.com/manual/en/zend.auth.html) 。応用。

于 2011-06-08T15:19:45.690 に答える