2009-04-17 6 views
6

私は現在、PHPを使用する際の選択の枠組みとしてCodeIgniterを使用しています。私が取り組んでいることの1つは、「ページ」の考え方と、MVC内で正しく表現する方法です。私の知る限りでは、CodeIgniterには、ページコントローラに委任するフロントコントローラがあります。私の思考プロセスでは、各ページにはそれ自身のコントローラがあります。あまりにも頻繁に私は多くの方法で詰め込まれたページコントローラを使用して誰かを参照してください。そういう意味で、それぞれの行動はそれ自身のページになります。MVCで従来の「ページ」概念を定義するものは何ですか?

あなたが一度にコントローラに1つのメソッドまたは2が必要な場合は、あまりにも多くのオーバーヘッドが発生しますようにそれはそうなので、私は本当に、一方のコントローラに多くの方法を詰めるの考えを言っていたことがありません。各ページが独自のコントローラを持っている方が合理的です。そのアクションは、その特定のページでできることにのみ対応します。私はこれを間違った方法で考えていますか?

いくつかのWebアプリケーションでは、複数のメソッド(ログイン、登録、表示、編集など)を持つコントローラが1つありますが、実際には他のコントローラログインコントローラ、およびレジスタコントローラを含む。 「ページコントローラー」を正しく使用することは何ですか?

答えて

7

ドメインの観点からは、ドメインコントローラあたり1つのコントローラを持つ方が理にかなっています。文脈にもよるが、ページあたり1つである必要はない。私が文脈で意味するのは、「密接に関連している行動」です。

例えば、アカウントコントローラは、ログイン、登録、ログアウト、パスワード変更、アクションを処理する必要があります。彼らはすべて "アカウント"のコンテキスト内に住んでいます

Take Stackoverflowたとえば、。私はDisplayQuestion、AskQuestion、Delete Question、MostRecent Questionsなどのようなアクションを持つ「質問」コントローラを持っています。それらはすべて1つのコントローラで管理される「ビュー/ページ」が異なります。

1

コントローラー内のすべてのパブリックメソッドが「ページ」になるというのはあなたです。つまり、必ずしもWebページではなく、アクションはデータのポストで、別のアクション/ページにリダイレクトされるため、ページは必ずしも「Webページ」を意味するとは限りません。

MVCでは、多くの慣習が使用されています。たとえば、すべてのコントローラーは「コントローラー」で終わらなければなりません。したがって、UserControllerには一連のユーザーページ(作成、編集、削除など)があります。ビューフォルダでは、コントローラクラス内の各パブリックメソッドまたはアクションは、コントローラのプレフィックス(この場合はUserフォルダ)と一致するフォルダ内のWebページになります。そのため、コントローラクラス内の "Delete"というアクションは、Userフォルダ内のDelete.aspxページを指しています。

1つのクラスでこれらのメソッドのすべてを入れて少し厄介なようだが、それはあなたの目的に基づいて機能のような組織の素敵な仕事をしていません。

+1

"コントローラ"で終わる必要があるすべてのコントローラについてのポイントは、Asp.Net Mvcフレームワークにのみ適用され、必ずしも彼が扱っているPHPフレームワークではありません。 – Micah

1

MVCでは、「ページ」は、3つのページをまとめたときに得られるものです。モデルはデータレイヤを処理し、ビューは実際のHTMLを処理し、コントローラは目的のデータを表示するためにどのように連携するかを決定します。別のコントローラーまたは別の方法を既存のコントローラーに使用するかどうかは、私が持っている他のコントローラーの操作の程度に左右されます。ユーザーの追加、ユーザーの削除、パスワードの変更などを処理する可能性が最も高いUserAdminコントローラが必要だったとします。何らかの方法でユーザーのアカウントを変更する機能を追加した場合は、そこで。もし私がそれらを自分のコントローラーに分ければ、私は自然に別のコントローラーを追加するでしょう。コントローラを使用すると、類似のタスクをまとめることができるため、すでに行われている処理を再作成する必要がなく、クラスに含まれているものを活用できます。プログラマーがそれを行うべきだと思う方法の多くは、それです。あなたにとって理にかなっているのは、開発者(またはデザイナー)の選択である私にとって意味をなさないかもしれません。

関連する問題