スポンサーサイト

[ - ]

一定期間更新がないため広告を表示しています

2010.04.21 Wednesday  | - | - | 

簡易WEBアプリ/PHPクラスファイル

[ IT情報 ]
競馬簡易WEBアプリケーション

■45分クッキング!簡易WEBアプリ

現在、WEBを勉強している生徒さんが「競馬予想を毎日更新できるポータルサイトを作りたい」と言っていたので、簡単に動的部分を含めたサンプルを作成することに・・・。競馬のことはわかんないですが、プログラムはわかるので仕様書?(※生徒さんのメモ用紙)にのっとって早速作成!
上記イメージにあるようにPHPとMySQLを使って、「管理ログイン」⇒「予想場入力フォーム」⇒「データベース情報を取得」という会社の勤怠管理システムでもあるような簡単なDB登録システムを作成。データベース接続部分は現在「別途作成中のコンテンツ」でクラス化しておいたものを引用したので、45分という短時間で作成することができました。そんなわけで、今度は、これを生徒さんが1人で作れるように指導しています。DB部分(SQL操作)は前回の少人数で一通り行って理解されているので、今度はプログラム部分をがっちりと。そんなわけで、今回は上記の競馬システムでも使用したDB接続用のクラスのソースを公開しつつ、サーバサイド技術であるJAVAとPHPのMVCモデルについて簡単に説明していきます。


■サーバサイドJAVA(MVCモデル)

JAVA(MVCモデル)

WEBサーバ上で動作するプログラムにJAVA(JSP/サーブレット)がありますが、JAVAプログラムでよく用いられる方法が「MVC」という言われるモデルです。MVCとは「Model」、「Controller」、「View」の略で、処理を3つに分けることで、ソースを見易くして効率良くWEBサイトを構築することを目的としたものです。クライアントサイドで「HTML」、「CSS」、「JavaScript」を目的に応じて外部ファイルに指定するようなイメージを思い浮かべると分かりやすいかも・・・。それぞれの役割は以下になります。

◎Model(モデル)
定期的な処理を記述する際に使用。プログラム内で何度も使い回しをする処理に向いており、例えばWEBプログラムからデータベースに接続する記述など、ルーチン化しておくことで、毎回毎回接続情報を記述しなくて済みます!AJAXで使用する「prototype.js」みたいな一種のクラスライブラリです。

◎View(ビュー)
WEBページの表示を担当。サーバーサイドJAVAでは、ユーザーの処理を受け付けるために、サーブレットとJSPと呼ばれる手法が用いられますが、どちらも似たような処理が
可能です。以下のプログラムソースの左側が「サーブレット」で、右が「JSP」です。両方とも似たような処理が可能で、サーブレットがプログラム内にHTMLタグを記述するのに対し、JSPはHTMLにプログラムを記述をする形になります。ソースの見易さやHTMLに慣れた人なら断然JSPが優位です。

◎Controller(コントローラ)
JAVAの制御・リクエスト処理を担当。Viewのところで、JSPはソースが読み易いと書いたんですが、反面サーブレットに比べて初回起動時の処理が遅いのが難点。なので、MVCモデルでは、制御処理(※フォームのリクエスト処理など複雑な部分)はサーブレット(Controller)で記述して、それをJSP(View)側で呼び出すのが一般的です。例えば以下の、JSP側の<% title %>という部分の処理をサーブレット側で記述することで役割分担させ且つ効率良く記述することができます。


サーブレット/JSP

■PHP(MVCモデル?)

というわけで、ここまでサーバサイドJAVAにおけるMVCモデルの説明だったんですが、今回、PHPでも似たようなことできるじゃんと思ったので紹介します。今まで、PHPでも「View」と「Controller」の分離はSmartyテンプレート(※カスタムブログでもある、<h1>{$title}</h1>みたいな記述)を使えば容易にできるのは知ってましたが、今回は、JAVAのMVCモデルをヒントに、データベース接続などの定型処理に使用する「Model部分」をPHPで作成しました。JAVAのMVCモデルにのっとって役割分担させると以下のようになります。


PHP(MVCモデル)

■外部クラスでソース30%OFF

以下のソース左側も右側も同様にPHPからMYSQLに接続するという処理を記述した例ですが、右側がデータベースの接続部分をクラス化したものになります。クラスファイルを「require」「include」を使用して外部から読み込ますことでソースが30%削減されてかなりすっきりしました!!
接続部分を呼び出す形になっているので、あとは、目的に応じて、カラム用の配列を指定したり、SQL文を記述すればOK。


ソース30%OFF

■外部「iniファイル」でセキュリティ強化

というわけで、以下が定型となるデータベース接続部分を記述したクラスファイルになります。クラス化しておくもう一つ利点として、データベースの接続部分(ホスト名やパスワード)等を外部ユーザーが変更させないようにカプセル化(隠蔽)するところにあります。さらに今回、接続情報を別途「.ini」ファイルに定義することで二重の隠蔽を行なっています。このユーザー情報を定義した「.ini」ファイルをApache内の隔離された場所に配置すれば、さらなるセキュリティ強化にも繋がります。


外部クラスと外部ini
2007.06.28 Thursday 02:00 | comments(0) | trackbacks(8) | 
<< 武田流インディアン/最高級カレー | main | 築地・鰻店はいばら/うなぎ丼 >>

スポンサーサイト

[ - ]
2010.04.21 Wednesday 02:00 | - | - | 
-
管理者の承認待ちトラックバックです。
| - | 2007/06/29 5:25 PM |
-
管理者の承認待ちトラックバックです。
| - | 2007/06/29 6:41 PM |
-
管理者の承認待ちトラックバックです。
| - | 2007/06/29 10:03 PM |
-
管理者の承認待ちトラックバックです。
| - | 2007/06/30 11:22 AM |
-
管理者の承認待ちトラックバックです。
| - | 2007/06/30 2:26 PM |
-
管理者の承認待ちトラックバックです。
| - | 2007/06/30 10:24 PM |
-
管理者の承認待ちトラックバックです。
| - | 2007/07/01 11:23 AM |
-
管理者の承認待ちトラックバックです。
| - | 2007/07/01 4:11 PM |