続いて、MySQLサーバと連携(データベースへのアクセスが発生)するサンプルを使って解説します。
sample4のソースファイルをダウンロードして、Apacheのドキュメントルートに展開してみましょう。
# cd /var/www/html/ |
sample4ディレクトリの下には、次のようなファイルが展開されます。
/var/www/html/sample4 |
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スクリプトからデータベースが操作できるよう権限設定を行います。
下記のようにサンプルDB、テーブルの作成、サンプルデータの挿入を実行します。
# mysqladmin -uroot -p create sample_db2 ←データベースの作成 |
続いて、作成したテーブルの確認を行います。
# mysql -uroot -p sample_db2 |
最後に、権限の設定(ユーザー名:php、パスワード:password)を行います。
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON sample_db2.* TO 'php'@'localhost' IDENTIFIED BY 'password'; |
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON sample_db2.* TO 'php'@'Apache HTTPDサーバのIPアドレス' IDENTIFIED BY 'password'; mysql> quit |
さらに、作業ディレクトリを移動して、サンプルPHPスクリプトsample4.phpを実行し、インストールが完了していることを確認します。
# cd CommandLine |
ここでは、DTO、DAOパターンを使って、データベースアクセスに関連する操作をItemDaoというクラスに集約する例を紹介します。
DAOパターンを利用することで、データベースアクセスのような煩雑な手順を本来必要な処理から切り離すことができ、PHPコードを簡素化することができます。
先ほどのTestClass.php(リスト1)では、$idという変数のみを扱いましたが、今回作成するItem.php(リスト3)では、在庫管理を意識してもう少し変数を増やしてあります。それに伴い、セッター、ゲッターメソッドの数も増えていることに注目してください。
1 <?php |
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.
Linux �ス�ス�ス�ス�ス�ス�ス�ス OSS 鬯ョ�ォ�ス�ェ髯区サゑスソ�ス�ス�ス�ス�コ髣包スオ隴∵コキ�ク�キ�ス�ケ隴趣ス「�ス�ス�ス�ウ鬩幢ス「�ス�ァ�ス�ス�ス�ュ鬩幢ス「隴趣ス「�ス�ス�ス�ウ鬩幢ス「�ス�ァ�ス�ス�ス�ー