ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ZendにおけるMVC(Javaフレームワークとの違い)その1

2012-11-05 14:43:21 | PHP
Zend PHPのサンプルはいろいろあるが、MVCはこうやれ!
というのを、はっきり書いていないので、ここに書いてみる。
(何回かに分けて書く)

今日はMVCのうち、VとCについて(つまり、画面周り)
抽象論




■基本的な画面構成

以下の構成が基本なようだ

・1画面につき、ボタンが1個ないしは数個ある
・このボタンをクリックすると、サーバーにいって、処理をする




■Zendにおける基本的な考え方

・コントローラーは、大きく2つの部分に分かれる。
   フロントコントローラー:1つのアプリ?に関して1つ
   アクションコントローラー:1画面につき1つのクラス

・ビューは、1画面につき1つのファイル(.phtml)になる




■つまり、画面側からみると、

1画面について、
  1個のコントローラーのファイルが作成され、クラスが記述される
     画面に対応するボタンが、クラス内のアクションになる
  1個のビューのHTMLファイル(phtml)がある
     ビューの名前は、デフォルトでは、コントローラーのアクション名




■ということは(注意点)

・現在表示している画面が、index/index.phtml画面だったとする。
 この中のフォームタグのactionの指定が、
   ans/kotae
 だったとすると、
   AnsController.phpのAnsControllerクラス内のkotaeメソッドが呼ばれ、
 次に表示される画面は、
   ans/kotae.phtml
 となる。

 フォームタグでは、呼び出すメソッドと同時に(デフォルトでなにもしないと)
 次の画面指定までかかわってくるので注意




■Javaとの違い

 Javaのフレームワーク、たとえば、strutsの場合、
 ボタン、つまりアクションは、Actionクラスになる。

 一方、Zendでは、アクションは、メソッドであり、
 アクションを起動するボタンが入っている画面が、
 クラスに相当する。

クラスになるものが違うので注意




■ただ、これは危険

 ただ、Zendのデフォルトのこの方式は、次に表示する画面が予見できる
場合はいいが、そうでないケース、たとえば、DBアクセスをした結果、
処理を振り分けるなどというときには、やりにくい。

 そのため、リダイレクト、フォワード、renderの変更などを使って、イベント処理と次画面表示をわけられる。これについては、別の機会に

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする