PHP Object Generatorのデータベースオブジェクトを使ってみる

お勉強がてらにPHP Object Generatorを使ってみた。そのときのメモ。読みにくいのはご愛嬌。
手順は以下の通り。


1. PHP Objct generator(http://www.phpobjectgenerator.com/)のページでDBオブジェクトの設定をする。
以下の様な内容で設定してみた。

  • テーブルの名前
    • userlist
  • DBの項目
    • NAME = VARCHAR(255)
    • AGE = INT
    • MAILADRS = VARCHAR(255)

設定を入力した際の画面は下の様な感じ。

f:id:hideack:20070805014754p:image

2. オブジェクト一式がzipに固められダウンロードできるのでダウンロードする。

3. ダウンロードしたパッケージを解凍する
解凍すると中身は以下の様な内容になっている。

  • configuration.php (DBに接続するためのパラメータ設定)
  • objectsディレクトリ
    • データベースオブジェクトが入っている模様
  • pluginsディレクトリ
  • setupディレクトリ
    • webサーバの公開領域に置いた際にブラウザから設定やテストができる模様

4. configuration.phpを設定する
おそらく目を通せば、そのままなのでわかると思う。
一部を示すと以下の様な形。そのまんま。

<?php
// edit the information below to match your database settings
$configuration['db']	= 'test';       // database name
$configuration['host']	= 'localhost';	// database host
// (以下続く)
?>

5. DBに実際にテーブルを用意する。
自分自身が手探り状態なので、とりあえず直接MySQLを操作して作る事にした。
で、ここで objects/class.userlist.php を見てみると、自動生成されたソースコードの上部のコメントに以下の様な内容が書かれている。

This SQL query will create the table to store your object.

CREATE TABLE `userlist` (
   `userlistid` int(11) NOT NULL auto_increment,
   `name` VARCHAR(255) NOT NULL,
   `age` INT NOT NULL,
   `mailadrs` VARCHAR(255) NOT NULL, PRIMARY KEY  (`userlistid`)) ENGINE=MyISAM;

最初の設定では、name, age, mailadrsの3列分の情報しか定義しなかったのだけど、Php Object Generatorはuserlistidというカウンタ値を付けて、それをprimary keyとして管理するということになっている模様。
なので、上記の定義をそのまま利用してMySQLにテーブルを作成する。

% mysql -u test -ptest
mysql> use test;
Database changed

mysql> CREATE TABLE `userlist` (`userlistid` int(11) NOT NULL auto_increment,`name` VARCHAR(255) NOT NULL,`age` INT NOT NULL,`mailadrs` VARCHAR(255) NOT NULL, PRIMARY KEY  (`userlistid`)) ENGINE=MyISAM;

Query OK, 0 rows affected (0.04 sec)

うむ。無事に出来た。

6. POGのDBオブジェクト経由でデータを書いてみる。
破竹の勢いで自動生成されたソースコードに目を通す。こんな感じで操作するとデーターベースに登録されそうだな。と、目星をつけて書いてみる。

<?php
require_once("configuration.php");
require_once("objects/class.database.php");
require_once("objects/class.userlist.php");

$db = new USERLIST("taro yamada", 30, "taro@hoge.com"); 
$response = $db->Save();
print "RESPONSE CODE=".$response."\n";

?>

これを実行してみると、

%php -q test.php

RESPONSE CODE=1

となる。ここで返却される数値はデータベースのテーブルのprimary keyとなっている項目(ここでは、userlistidという名前の列)の値であるので、書き込めたに違いないということで、MySQL経由で実際にテーブルを見てみる。

mysql> SELECT * FROM USERLIST;
+------------+-------------+-----+---------------+
| userlistid | name        | age | mailadrs      |
+------------+-------------+-----+---------------+
|          1 | taro yamada |  30 | taro@hoge.com |
+------------+-------------+-----+---------------+
1 row in set (0.01 sec)

おぉ、書けている!!
と、ここまでいった時点で久しぶりの夜更かし状態でかなり眠くなってきたので続きはまた明日。


<蛇足>
この使い方が正しい使い方なのか大きく謎ですので、その点はご了承ください。