サンプルのインストールと実行
続いて、MySQLサーバと連携(データベースへのアクセスが発生)するサンプルを使って解説します。
sample4のソースファイルをダウンロードして、Apacheのドキュメントルートに展開してみましょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
sample4ディレクトリの下には、次のようなファイルが展開されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
sample4ディレクトリ直下には、簡易在庫管理システムのためのPHPファイルがあります。また、sample4/CommandLineの下にはコマンドラインphpで使用するサンプルファイルがあります。ちなみに先ほど使用したTest.php(リスト2)やTestClass.php(リスト1)もここに収録されています。
まず、「sample4_db.sql」ファイルを使用しMySQLの準備を行います。第5回までの作業で、MySQLサーバが起動しているはずです。起動していない場合は、前回までの記事を参考にして作業を行ってください。
今回使用するデータベース「sample_db2」を新規に作成し、sample4.tgzに含まれるsample_db2.sqlファイルを使って、テーブルの作成、サンプルデータの挿入を行います。最後にPHPスクリプトからデータベースが操作できるよう権限設定を行います。
MySQLサーバ側の準備と確認
下記のようにサンプルDB、テーブルの作成、サンプルデータの挿入を実行します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
続いて、作成したテーブルの確認を行います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最後に、権限の設定(ユーザー名:php、パスワード:password)を行います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
さらに、作業ディレクトリを移動して、サンプルPHPスクリプトsample4.phpを実行し、インストールが完了していることを確認します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
サンプルでDTO、DAOパターンを学ぶ(1)
ここでは、DTO、DAOパターンを使って、データベースアクセスに関連する操作をItemDaoというクラスに集約する例を紹介します。
DAOパターンを利用することで、データベースアクセスのような煩雑な手順を本来必要な処理から切り離すことができ、PHPコードを簡素化することができます。
先ほどのTestClass.php(リスト1)では、$idという変数のみを扱いましたが、今回作成するItem.php(リスト3)では、在庫管理を意識してもう少し変数を増やしてあります。それに伴い、セッター、ゲッターメソッドの数も増えていることに注目してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
5〜9行目
在庫管理を意識して、$name(商品名)、$detail(商品説明)、$price(価格)、$qty(在庫数)といった変数を追加しています。
17〜60行目
変数の追加に伴い、それに対応したセッター、ゲッターメソッドを用意します。
13〜15行目
TestClassではコンストラクタ、デストラクタを用意しましたが、必要がなければあえて用意する必要はありません。echoやprintで文字列への変換が必要なときには、タブ区切りで変数値を出力するようにします。
なお、$idや$nameなど文字列を直接扱うよう処理を書くこともできます。しかし、クラス間でデータを交換する際、データの受け渡しを行うItemクラスのようなDTO(Data Transfer Object)を用意した方が、各変数のカプセル化やデータ要素に変更が発生した際の柔軟さなどで多くのメリットを享受できます。
Copyright © ITmedia, Inc. All Rights Reserved.