- ベストアンサー
ZendFrameworkでコントローラを作る単位
Zend Frameworkで、コントローラを作る単位は、どのように決めていますか? たとえば、ユーザ管理をするとして、UserController.phpというものを作り、追加・更新・削除のアクションを作るとすると、一つのアクションに、入力・確認・実行の3画面が必要というような要求だと、コントローラのなかみがごちゃごちゃになってしまいます。 ですので、UserAddController.phpというようなコントローラを作り、inputAction,confirmAction,executeActionというようなアクションを作ろうかと考えています。 もちろん自由だとは思いますが、皆さんはどのようにしているのか教えてもらえればと思います。
- みんなの回答 (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のプロジェクトだと なにかと面倒・・・
その他の回答 (1)
- wp_
- ベストアンサー率54% (132/242)
>追加・更新・削除のアクションを作る Zend Frameworkを使用してコンテンツを作る際、actionで切り分けられるのは「画面」です。 追加削除などの分類は「機能」であり、機能はactionで分けるよりもcontrollerで分けるのが自然です。 なので、 >UserAddController.phpというようなコントローラを作り、(snip) といったようにするのは とても良いことであると当方は思います。 つか当方が作るならそうします。^^; // 私見だけどZend Frameworkはかなり使い辛い(追い辛い)と思う(:>^ // mapleいいよmaple
お礼
あー。やっぱりそうなのですね。 機能ごとに分けていたら、なんだか、違和感を感じてしました。 もしかしたら、画面ごとじゃないのかな・・・と思って質問したのですが、すっきりしました。 mapleですか?初めて聞きました。 ちょっと調べてみましたが・・・。 「あーそうそう、そうなんだよねぇ」とかゆい所に手が届くてきな内容ですね。興味がわいてきました。
お礼
回答ありがとうございます。 お礼が遅くなりましたが、この間、いろいろ、親クラスのつくりを研究していました。 inu2さんの言うように、各段に使いやすくなりました。 ありがとうございました。