Zend Frameworkで、コントローラを作る単位は、どのように決めていますか?
たとえば、ユーザ管理をするとして、UserController.phpというものを作り、追加・更新・削除のアクションを作るとすると、一つのアクションに、入力・確認・実行の3画面が必要というような要求だと、コントローラのなかみがごちゃごちゃになってしまいます。
ですので、UserAddController.phpというようなコントローラを作り、inputAction,confirmAction,executeActionというようなアクションを作ろうかと考えています。
もちろん自由だとは思いますが、皆さんはどのようにしているのか教えてもらえればと思います。
No.2ベストアンサー
- 回答日時:
まぁ、クラス切り方次第ですからね。
私の場合、画面の関連性や流れを1つの軸として考えます。
この軸を1つのControllerとしています。
たたとえば、「追加」という機能であれば
入力画面→確認画面→登録完了画面
と、パターン化しているわけですよね。
そういった画面の流れを 「軸」という考え方でクラス切ってます。
追加、削除、変更であれば、それぞれ別な「軸」ですので、3個のControllerを作ればよい。
ただ、これら3つに関しては、ほかの部分にも使えるものですよね
たとえば、
ユーザーの、追加、削除、変更
商品の 追加、削除、変更
などなど、「追加」「削除」「変更」それぞれ やることは同じです。
違うのは ユーザーなのか商品なのか ってだけ
ですから、追加機能用の Controllerのひとつ上の親クラスを作っておく
削除用の・・・
変更用の・・・
としておく
たとえば、
通常そのままであれば、
class useraddController extends Zend_Controller_Action
{
~中略~
}
となりますが、
addControllerBase というように、「追加」という機能に限定したクラスを作っておいて、
class addControllerBase extends Zend_Controller_Action
{
~中略~
}
各、末端のコントローラーでは
class useraddController extends addControllerBase
{
~中略~
}
とか、
class productaddController extends addControllerBase
{
~中略~
}
みたいにしておくと、便利っすよ。
Zend frameworkってまだ出て間もないし、中身的にはちょっと汚い部分もあります。
さらに、未完成な状態だと私は思います。
こういったベースとなるコントローラーを作ってあげたり、
DB関連のマネージャークラスをつくってあげたり、
ほかにも、dao関連とか、model関連を作ってあげたり
と、手を入れてやることでそれなりに快適に使える状態となります。
//mapleは嫌いでは無いですが。
//php4をベースとして書かれているのでphp5のプロジェクトだと なにかと面倒・・・
回答ありがとうございます。
お礼が遅くなりましたが、この間、いろいろ、親クラスのつくりを研究していました。
inu2さんの言うように、各段に使いやすくなりました。
ありがとうございました。
No.1
- 回答日時:
>追加・更新・削除のアクションを作る
Zend Frameworkを使用してコンテンツを作る際、actionで切り分けられるのは「画面」です。
追加削除などの分類は「機能」であり、機能はactionで分けるよりもcontrollerで分けるのが自然です。
なので、
>UserAddController.phpというようなコントローラを作り、(snip)
といったようにするのは とても良いことであると当方は思います。
つか当方が作るならそうします。^^;
// 私見だけどZend Frameworkはかなり使い辛い(追い辛い)と思う(:>^
// mapleいいよmaple
あー。やっぱりそうなのですね。
機能ごとに分けていたら、なんだか、違和感を感じてしました。
もしかしたら、画面ごとじゃないのかな・・・と思って質問したのですが、すっきりしました。
mapleですか?初めて聞きました。
ちょっと調べてみましたが・・・。
「あーそうそう、そうなんだよねぇ」とかゆい所に手が届くてきな内容ですね。興味がわいてきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 据え置き型ゲーム機 PS4コントローラのリセット確認方法 1 2022/10/01 10:57
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- 特撮 メタ能力について 1 2022/05/03 13:37
- Evernote フォートナイトをwin10でやる時、任天堂のプロコンが使えません。ご教授ください。多少調べた事は試し 1 2023/01/15 09:10
- プリンタ・スキャナー 「用紙が違う」メッセージが頻発 4 2022/08/22 08:30
- Yahoo!メール YahooIDをパスワード形式にしただけなのに、利用規約違反とされて電話番号が使えなくなりました 3 2023/03/25 04:08
- iCloud AppleID サポートからのメール 3 2023/07/05 15:14
- 洋画 映画が好きな主婦です。 先日、インディージョーンズとミッションインポッシブルの最新作を映画館で見まし 5 2023/07/25 01:37
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Word(ワード) Word文書のドラッグ操作による配置調整。 1 2022/10/16 19:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
テキストボックスからフォーカ...
-
ブック開いたときのフォーカス指定
-
コンピュータ言語paythonのエデ...
-
C#での変数スコープ?
-
一部の文字のみ文字化けします
-
globalと$GLOBALSの違いは?
-
C++の例外処理
-
VB.NET でのLaod/unLoad につ...
-
スマホを持っているとしんどい...
-
ヒント表示について
-
word
-
illustratorとExcelは連携出来...
-
PowerPoint SmartArtの箇条書...
-
c言語
-
イラレでダブルクリックで文字...
-
数式中の文字をCambria Math以...
-
DataGridViewでセル内の特定の...
-
PDF-XChange Viewer のタイプラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
NumericUpDownの数値を選択済み...
-
テキストボックスからフォーカ...
-
VB.NETのテキストボック...
-
エアー漏れの流量の計算式を教...
-
VB.NET でのLaod/unLoad につ...
-
フォームを開く時のイベント処理
-
vba メモリーリーク
-
項目数は英語で
-
シリアルフラッシュメモリをな...
-
TextBoxにカーソルがあるかない...
-
ヒント表示について
-
mailの送信音がしなくなったの...
-
ブック開いたときのフォーカス指定
-
VBのレコードセットを閉じない...
-
コンピュータ言語paythonのエデ...
-
vc++2005エラーメッセージ
-
C言語の関数の実引数と仮引数の...
-
globalと$GLOBALSの違いは?
おすすめ情報