SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

プログラミング未経験から始めるPHP入門

PEARライブラリを使ってプログラムのブラッシュアップに挑戦してみよう!
プログラミング未経験から始めるPHP入門~応用編(4)

第11回


ダウンロード サンプルソース (25.7 KB)

MDB2を利用したプログラムのブラッシュアップ

 それでは、実際に今まで作成してきたプログラムをブラッシュアップしてみましょう。はじめのステップとして、商品一覧画面と会員登録画面をMDB2を使用したコードに置き換えてみます。

 サンプルソースの「STEP1」フォルダの中に、前回作成したitem_list.phpとmember.phpがあります。item_list.phpに関しては既にMDB2に置き換えているので、これを参考に、member.phpをMDB2に置き換えてください。

 具体的な手順として、まずはmember.phpにてMDB2を用いてデータベースに接続し、文字コードの指定をしてください。Item_list.phpの

// MDB2 ライブラリの読み込み
require_once("MDB2.php");

 の行から、

// 文字コードの指定
$mdb2->setCharset( "utf8" );

 の行までがその処理にあたりますので、これをmember.phpに適用します。MDB2を用いない既存のプログラム行は削除しましょう。

 次に、それぞれのSQL文をMDB2を使って実行できるようにします。

 member.phpでは、条件に応じて3つのSQL文を実行しています。例えば、その1つとして以下のSQL文があります。

$sql  = " UPDATE m_customers SET ";
$sql .= " customer_code = '" . $_REQUEST['customer_code'] . "',";
$sql .= " pass = '" . $_REQUEST['pass'] . "',";
$sql .= " name = '" . $_REQUEST['name'] . "',";
$sql .= " address = '" . $_REQUEST['address'] . "',";
$sql .= " tel = '" . $_REQUEST['tel'] . "',";
$sql .= " mail = '" . $_REQUEST['mail'] . "'";
$sql .= " WHERE customer_code =  '" . $_SESSION['customer_code'] . "'";
$res = mysql_query( $sql );

 上記を始めとするすべてのSQL文の$_REQUEST['xxxx']の部分を、?(クエスチョンマーク)に置き換え、MDB2を使用して実行できるようにしてください。編集が終わったら、C:\xampp\htdocs\ec\以下に置き、ブラウザでアクセスして動作を確認しましょう。

 うまく動作しましたか? 「STEP1」フォルダの中の「answer」フォルダに解答例がありますので、確認してください。

プログラムを共通化する

 それでは、次に「共通化」という作業を行い、プログラムをすっきりと見やすくします。共通化とは、重複する処理を別のファイルに抜き出し、重複をなくすことです。

 例えば、これまで作成した商品一覧画面、会員登録画面には、一部同じような処理が書かれています。具体的には、以下の2つの処理が共通しています。

  • データベースに接続する処理
  • 画面左メニューの「ログイン」機能、「商品検索」機能など

 これらの処理は、2つのファイルにまったく同じ内容のプログラムを書いて実装してきましたが、このままでは後々のメンテナンスが大変そうです。

 商品検索エリアに「価格」による検索項目が追加になったとしましょう。その場合、2つのファイルの修正が必要になります。下図の黄色の枠の部分は処理に重複がある箇所ですので、この部分に項目の追加などがあると労力がかかります。

2つのファイルに処理が重複している
2つのファイルに処理が重複している

 これらを共通化し、重複する処理を1カ所にまとめることで、よりスマートにメンテナンスができるようになります。

 今回は、データベースに接続する処理を「database.php」というファイルに記述し、ECサイト内の左メニューに関する処理を「left_pane.php」というファイルに記述します。これらのファイルを、詳細画面と会員登録画面それぞれから呼び出して使います。

共通化後のイメージ。重複する処理を別のファイルに抜き出す
重複する処理を別のファイルに抜き出して共通化する

 上記のような構造にすれば、例えば、ECサイトの左メニューに新しい項目を追加したい、といった場合、「left_pane.php」のみを修正すればいいことになります。

 具体的な呼び出し方は、PHPのrequire_onceという命令を用います。

require_once("呼び出したいファイル名");

サンプルソースの共通化 

 それでは、実際に作業をしてみましょう。まず、サンプルソースの「STEP2」フォルダにあるincludeフォルダを丸ごとコピーし、C:\xampp\htdocs\ecの下に配置してください(コピー後のパスはC:\xampp\htdocs\ec\includeとなります)。このフォルダの中には、既にdatabase.phpとleft_pane.phpの完成形が入っています。

 次に、item_list.phpとmember.phpを開いてみましょう。それぞれのファイルに星印でコメントしてある部分があるので、指示に従ってrequire_once命令に置き換えてください。

 今回は、呼び出すファイルがincludeフォルダ内にあるので、

require_once("include/<呼び出したいファイル名>");

 のようにスラッシュ区切りでフォルダ名を指定してください。

 うまく動作しましたか? 解答例はサンプルソースの「STEP2」フォルダ内のanswerフォルダの中にありますので、確認してください。

コラム2

 データベース処理ライブラリは、MDB2の他にも「adodb」や「PDO」をはじめ、多くの種類が存在します。今回は、PHPで使われることの多いPEARの使用方法に慣れる目的で、MDB2を採用していますが、興味が湧いた方は、調べてみるといいでしょう。

次のページ
その他のブラッシュアップ

修正履歴

この記事は参考になりましたか?

プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

大家 正登(オオイエ マサト)

デジタルハリウッド『PHP 講座』講師。学生時代、スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。その後中堅 SIer に 3 年間所属し、現在はフリーエンジニア。仕事の傍らジャズを演奏し、コントラバス 2 台と同居中。(ITエンジニア・大家正登のWeb...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4204 2010/11/16 11:56

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー