質問: webアプリにおけるエントリポイントとフレームワーク php4環境で、フレームワーク(以下fw)の勉強をしつつ、mojavi2の導入を検討中です。 そこで思ったのですが、fwベースで開発したwebアプリは、基本的にエントリポイント(以下ep)は1つだけ(mojaviでは、フロントコントローラであるindex.php)で構成されるのが基本(メリットが大きい)なのでしょうか? また、複数のepで構成することは一般的に可能でしょうか? 例えば、id登録制bbsアプリを作る場合、ログイン・id登録・bbs投稿・bbs表示・プロフ登録・プロフ表示...等の「機能」があると思います。 これをfwベースで開発する場合、各機能をmoduleとし、機能内でのページ遷移をactionとして構成する、という考え方(id登録module:登録情報入力action→登録情報チェックaction→db登録action)で良いでしょうか? 複数のepを作るメリットは?と言われると分からないのですが、fw導入以前は各機能ごとにepとなるphpを作成するパターンに慣れてしまっていたもので...。例えば機能毎にフォルダ分けが出来るのが、複数epのメリットとも考えられます。 ex1. fwなし(ディレクトリ構成によりepを整理できる) /usr/login.php /usr/register.php /bbs/read.php /bbs/post.php /prof/register.php /prof/read.php ex2. 1epのfw /index.php?module=login /index.php?module=registerid /index.php?module=readbbs /index.php?module=postbbs /index.php?module=registerprofile /index.php?module=readprofile ex3. 複数epのfw(が可能かどうか分からないので、妄想) /usr/index.php?module=login /usr/index.php?module=register /bbs/index.php?module=read /bbs/index.php?module=post /prof/index.php?module=register /prof/index.php?module=read 昨日今日にfwを勉強し始めたので理解が浅いのですが、上記の考え方の正解と不正解を教えて下さい。
回答: no1です。 私もphp4を使ってたんですよ。確かにjavaのほうが大規模開発には向いてます。 ただし、phpのもつ利便性も大きなもので、 たとえば、mixiを作る程度なら、phpで十分です。あれにはjavaは使いません。現にxoopsなどはphpですから。 ex1に関してですが、phpにはincludeがあるから、実はすべてのファイルの冒頭で同じものを呼び出させることで、 ex1でもフロントコントローラにできます。 要は、コントローラとして働くロジック(requestに対してどのactionを呼ぶか)が、集中型であるかどうかです。 ページコントローラは、ページ(=機能)に関するイベントは、ページ内で処理します。 機能単位で小さなmvcの構造を持ち、共通するロジックやテンプレートメソッドを持つ、 ベースクラス(ルートページクラス)が存在することが多いです。 ですから、ex1,ex2,ex3どちらでも、どのつくりにもできることにはできます。 これらのframeworkを勉強するに当たっては、 「デザインパターン」というものが最初のステップになります。 これは、設計ではなくコーディングの仕方になります。 これらのほとんどがjavaで解説されてますが、php5でも同様のことはできます。 amazon.co.jpで「デザインパターン」を調べてみてください。 次のステップは、エンタープライズ開発の設計パターンの学習です。 書籍はコーディング系に比べてちょっと少ないのですが、 私は .netだったので、以下の書籍を参考にしていました。 ・「microsoft.netによるエンタープライズソリューションパターン」(asin: 4891004517) ・「.netのアプリケーションアーキテクチャ―アプリケーションとサービスの設計 」(asin: 4891004509 ) また、javaなら、sunの「j2ee blueprints」(書籍は不明なので以下のurl) http://sdc.sun.co.jp/java/j2ee/blueprints/index.html は必読です。 フレームワークの次は、ソフトウェアファクトリーということになると 思いますが、その場合は、 「ソフトウェアファクトリー―パターン、モデル、フレームワーク、ツールによるアプリケーションの組み立て」(asin: 489100472x) あたりが参考になると思います。 なお、高速でスキルアップをしていきたいなら、.netで学習して、javaに移る手があります。 .net はmsdnという高度に体系化された質の高い膨大な技術情報があるので、非常に便利です。 また、.net周りはツールの質が高く、初級から中級に上がるまでの速度は、ほかの比ではありません。 javaはphp同様オープンソースで利用率が高く、避けては通れません。いずれは使用することになります。 (後半になってくると、言語を学習するかどうかは問題ではありません。) 小さなことですが、補足です。 デコレータとオブザーバについてですが、 「フロントコントローラに加えて、受信フィルタ(デコレータ)の追加導入」 という言い方のほうが正しいかと思います。オブザーバも同じです。